{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import os\n",
    "os.chdir('E:\\pythonstudy')\n",
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "train = pd.read_csv('RentListingInquries_FE_train.csv')\n",
    "train=train.sample(n=10000)#数据量实在太大，只取10000个样本作为训练集\n",
    "test = pd.read_csv('RentListingInquries_FE_test.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAELCAYAAADOeWEXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAGa1JREFUeJzt3X+wJWV95/H3BxETjTqgA0sAMxgn\nRlwVdQIoKaNg+GXioCWKldWRUDtahYplNhvMulCCGo1Ro8nK7lQYHbJGwF8BI5FMCOiKigwIKKDL\nhBiYQODqIKKsWOB3/zjPdQ7D/dE9c8899859v6pOdff3PN39vXNr5jvdT/fzpKqQJKmr3cadgCRp\ncbFwSJJ6sXBIknqxcEiSerFwSJJ6sXBIknqxcEiSerFwSJJ6sXBIknrZfdwJjMITn/jEWrFixbjT\nkKRF5eqrr/5eVS2frd0uWThWrFjBpk2bxp2GJC0qSf61SztvVUmSerFwSJJ6sXBIknoZWeFI8tQk\n1w59fpjkLUn2SrIxyc1tuWdrnyQfTrI5yfVJnjN0rDWt/c1J1owqZ0nS7EZWOKrqO1V1cFUdDDwX\nuA/4LHAacGlVrQQubdsAxwIr22ctcDZAkr2AM4BDgUOAMyaLjSRp/s3XraojgX+uqn8FVgMbWnwD\ncHxbXw2cWwNfA5Yl2Rc4GthYVVur6m5gI3DMPOUtSdrOfBWOE4FPtPV9quoOgLbcu8X3A24b2mdL\ni00XlySNwcgLR5I9gJcCn5yt6RSxmiG+/XnWJtmUZNPExET/RCVJnczHFcexwDVVdWfbvrPdgqIt\n72rxLcABQ/vtD9w+Q/whqmpdVa2qqlXLl8/64qMkaQfNx5vjr2bbbSqAi4A1wHva8sKh+BuTnMeg\nI/yeqrojySXAu4c6xI8C3jYPeUsascP/4vBxp7DLu+JNV8z5MUdaOJI8Gvht4PVD4fcAFyQ5GbgV\nOKHFLwaOAzYzeALrJICq2prkLOCq1u7Mqto6yrwlSdMbaeGoqvuAJ2wX+z6Dp6y2b1vAKdMcZz2w\nfhQ5SpL68c1xSVIvFg5JUi8WDklSLxYOSVIvFg5JUi8WDklSLxYOSVIvFg5JUi8WDklSLxYOSVIv\nFg5JUi8WDklSLxYOSVIvFg5JUi8WDklSLxYOSVIvFg5JUi8WDklSLxYOSVIvFg5JUi8WDklSLyMt\n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\nt1TVTFcqmep0M8S3P8/aJJuSbJqYmOianiSppy6DHL58aHM3tvU1zCrJIxkUjY9X1Wda+M4k+7ar\njX3ZNinUFuCAod33B25v8RduF798+3NV1TpgHcCqVaucE12SRqTLFcfvDn2OBu5l0B8xo/aU1DnA\nTVX1gaGvLgLWtPU1wIVD8ddm4DDgnnZL6xLgqCR7JtkTOKrFJElj0KWPY0fn5TicwVAl30xybYv9\nMfAe4IIkJwO3MphREOBiBo/ibmbwOO5J7fxbk5zFtlkHz6yqrTuYkyRpJ800dezpM+xXVXXWTAeu\nqi8zdf8EwJFTHRA4ZZpjrQfWz3Q+SdL8mOmK48dTxB4DnAw8AZixcEiSdk0zTR37/sn19gLfqQxu\nH50HvH+6/SRJu7YZ+zjaW9tvBX6Pwct6z/GNbUla2mbq43gf8HIGj7g+o6p+NG9ZSZIWrJkex/0D\n4JcZDC54+9CwI/d2GXJEkrRrmqmPo/db5ZKkXZ/FQZLUi4VDktSLhUOS1IuFQ5LUi4VDktSLhUOS\n1IuFQ5LUi4VDktSLhUOS1IuFQ5LUi4VDktSLhUOS1IuFQ5LUi4VDktSLhUOS1MvICkeS9UnuSvKt\nodheSTYmubkt92zxJPlwks1Jrk/ynKF91rT2NydZM6p8JUndjPKK42PAMdvFTgMuraqVwKVtG+BY\nYGX7rAXOhp/PeX4GcChwCHDGZLGRJI3HyApHVX0J2LpdeDWwoa1vAI4fip9bA18DliXZFzga2FhV\nW6vqbmAjDy9GkqR5NN99HPtU1R0Abbl3i+8H3DbUbkuLTReXJI3JQukczxSxmiH+8AMka5NsSrJp\nYmJiTpOTJG0z34XjznYLira8q8W3AAcMtdsfuH2G+MNU1bqqWlVVq5YvXz7niUuSBua7cFwETD4Z\ntQa4cCj+2vZ01WHAPe1W1iXAUUn2bJ3iR7WYJGlMdh/VgZN8Angh8MQkWxg8HfUe4IIkJwO3Aie0\n5hcDxwGbgfuAkwCqamuSs4CrWrszq2r7DndJ0jwaWeGoqldP89WRU7Qt4JRpjrMeWD+HqUmSdsJC\n6RyXJC0SFg5JUi8ju1W1WDz3D88ddwpLwtXve+24U5A0R7zikCT1YuGQJPVi4ZAk9WLhkCT1YuGQ\nJPVi4ZAk9WLhkCT1YuGQJPVi4ZAk9WLhkCT1YuGQJPVi4ZAk9WLhkCT1YuGQJPVi4ZAk9WLhkCT1\nYuGQJPVi4ZAk9bJoCkeSY5J8J8nmJKeNOx9JWqoWReFI8gjgfwDHAgcBr05y0HizkqSlaVEUDuAQ\nYHNV3VJVPwXOA1aPOSdJWpIWS+HYD7htaHtLi0mS5tnu406go0wRq4c0SNYCa9vmj5J8Z+RZjc8T\nge+NO4k+8mdrxp3CQrK4fn9nTPXXb8laXL87IG/u9fv7lS6NFkvh2AIcMLS9P3D7cIOqWgesm8+k\nxiXJpqpaNe48tGP8/S1e/u4GFsutqquAlUkOTLIHcCJw0ZhzkqQlaVFccVTVA0neCFwCPAJYX1U3\njDktSVqSFkXhAKiqi4GLx53HArEkbsntwvz9LV7+7oBU1eytJElqFksfhyRpgbBwLDIOvbJ4JVmf\n5K4k3xp3LuonyQFJLktyU5Ibkpw67pzGyVtVi0gbeuX/Ar/N4BHlq4BXV9WNY01MnSR5AfAj4Nyq\n+o/jzkfdJdkX2LeqrknyWOBq4Pil+nfPK47FxaFXFrGq+hKwddx5qL+quqOqrmnr9wI3sYRHr7Bw\nLC4OvSKNWZIVwLOBK8ebyfhYOBaXWYdekTQ6SX4J+DTwlqr64bjzGRcLx+Iy69ArkkYjySMZFI2P\nV9Vnxp3POFk4FheHXpHGIEmAc4CbquoD485n3Cwci0hVPQBMDr1yE3CBQ68sHkk+AXwVeGqSLUlO\nHndO6uxw4DXAEUmubZ/jxp3UuPg4riSpF684JEm9WDgkSb1YOCRJvVg4JEm9WDgkSb1YOCRJvVg4\ntKQk+UqHNm9J8ugR53HwbO8BJHldkr+c4/PO+TG19Fg4tKRU1fM7NHsL0KtwtCHv+zgYWLIvkGlx\ns3BoSUnyo7Z8YZLLk3wqybeTfDwDbwZ+GbgsyWWt7VFJvprkmiSfbAPdkeS7SU5P8mXghCS/muQL\nSa5O8n+S/Hprd0KSbyW5LsmX2nAxZwKvam8gv6pD3suTfDrJVe1zeJLdWg7LhtptTrLPVO3n/A9T\nS9bu405AGqNnA09nMFDkFcDhVfXhJG8FXlRV30vyRODtwIur6sdJ/gh4K4N/+AF+UlW/CZDkUuAN\nVXVzkkOBjwBHAKcDR1fVvyVZVlU/TXI6sKqq3tgx1w8BH6yqLyd5EnBJVT0tyYXAy4CPtnN+t6ru\nTPI327cHnraTf14SYOHQ0vb1qtoCkORaYAXw5e3aHAYcBFwxGOeOPRiMNzXp/Lb/LwHPBz7Z2gE8\nqi2vAD6W5AJgR0dVfTFw0NCxH9dmojufQWH6KINBL8+fpb200ywcWsruH1p/kKn/PgTYWFWvnuYY\nP27L3YAfVNXB2zeoqje0q4GXANcmeVibDnYDnldV/+8hySVfBZ6SZDlwPPDOWdrvwKmlh7KPQ3q4\ne4HJ/51/DTg8yVMAkjw6ya9tv0Ob1OdfkpzQ2iXJs9r6r1bVlVV1OvA9BnOqDJ+ji39gMDIy7ZgH\nt/MW8FngAwyG/P7+TO2luWDhkB5uHfD3SS6rqgngdcAnklzPoJD8+jT7/R5wcpLrgBvYNh/8+5J8\nM8m3gC8B1wGXMbiV1KlzHHgzsCrJ9UluBN4w9N35wH9i222q2dpLO8Vh1SVJvXjFIUnqxc5xacyS\nnAScul34iqo6ZRz5SLPxVpUkqRdvVUmSerFwSJJ6sXBIknqxcEiSerFwSJJ6+f9LU7KzQt3m+QAA\nAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x21c17062588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#看看各样本分布\n",
    "sns.countplot(train.interest_level);\n",
    "pyplot.xlabel('interest_level');\n",
    "pyplot.ylabel('Number of occurrences');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10000, 228)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#将目标值与特征值分开\n",
    "y_train = train['interest_level']\n",
    "x_train = train.drop(['interest_level'], axis=1)\n",
    "X_train = np.array(x_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# prepare cross validation\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#直接调用xgboost内嵌的交叉验证（cv）\n",
    "\n",
    "def modelfit(alg, X_train, y_train, cv_folds=None, early_stopping_rounds=10):\n",
    "    xgb_param = alg.get_xgb_params()\n",
    "    xgb_param['num_class'] = 3\n",
    "    \n",
    "    #直接调用xgboost，而非sklarn的wrapper类\n",
    "    xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "    cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "             metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "  \n",
    "    cvresult.to_csv('1_nestimators.csv', index_label = 'n_estimators')\n",
    "    \n",
    "    #最佳参数n_estimators\n",
    "    n_estimators = cvresult.shape[0]\n",
    "    \n",
    "    # 采用交叉验证得到的最佳参数n_estimators，训练模型\n",
    "    alg.set_params(n_estimators = n_estimators)\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')\n",
    "        \n",
    "    #Predict training set:\n",
    "    #train_predprob = alg.predict_proba(X_train)\n",
    "    #logloss = log_loss(y_train, train_predprob)\n",
    "\n",
    "   #Print model report:\n",
    "   # print (\"logloss of train :\" )\n",
    "   # print logloss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "\n",
    "xgb1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=1000,  #数值大没关系，cv会自动返回合适的n_estimators\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb1, X_train, y_train, cv_folds = kfold)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\ngg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x21c28e18f60>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "        \n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(0, cvresult.shape[0])\n",
    "        \n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators4_1.png' )\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2MAAANGCAYAAABwUFaMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3Xu8blVdL/7Pd28EL7AWKhmSIpmG\nt1Iky/x5SyM9mFaeTl5LzLKkvBz71Us8HS+VUR1DTC2PV9QstYuWGAmalCHewAsoKhkiKKB4WRvF\nzYa9x/ljzhXPftaz1l5r7bUdsPf7/XrN11rPmGOOOeZ81ob1WWPM8VRrLQAAAHx3berdAQAAgH2R\nMAYAANCBMAYAANCBMAYAANCBMAYAANCBMAYAANCBMAYAANCBMAYAANCBMAYAANCBMAYwoapeV1XX\nVNUPzdj3nKpqVfXIqfK5cd+HquqbVXVtVV1RVf9cVY+vqgMm6h4xtjG5bamqT1TVs6pq83fjOldS\nVcdX1XG9+7E7qurmVfWCqnrwjH3Hjff9iA79Omzs172+2+fuqapOqapv9e5Hkoz3v1XVIb37AiCM\nAezsWUkuT/KGqrrJYuEYzl6Y5JTW2jsnyu+c5GNJ/leSf0/yS0kekuTpSb6U5HVJfnfGeV6W5MfH\n7ReSnJXkJUn+ZOMvac2OT3Jc707sppsneX6SB8/Y964M9/2y72aHRodl6Nc+FcYAmG2/3h0AuCFp\nrW2pqqckOT1DiHr+GMrelOSKDGEtSVJV+yV5R5JbJfnR1toFU829rap+L8lRM071xdbaByde/3NV\n3SPJ45L81oZdEEu01r6a5Ku9+7GRqurmrbWre/cDgLUxMgYwpbX2niSvTPLcqjo6yQuS3DPJU1pr\nCxNVfy7J3ZK8aEYQW2zr4tbaO1Z56oUk104WVNWmqvqdqvrMOH3yK1X1xqq63fTBVfXL43THrVX1\n9ap6e1XddarOHavqLVX15bG9K6rqvYvT5qrqC0nunuRBE9Mov7BSp8c6L6+qX6yqC6rq6rEfP73K\n655sa/+q+t2J6/1qVb2+qr5nqt5DqurMqvpaVX2nqr5YVX83Tk88IteHredPXMcp47FLpimObZ1f\nVT9eVR8Y2/xCVT153P+Iqjp3vLbzqurhU/2509jPC8c6X6qqd05Odx2nTH5kfPn6iX69YKLOo6rq\n7LGNq6rqjKr68alzLU6zu3dV/W1VfSPJ58d9K76/y9zzZ43t3WnGvj+uqm2LU/qq6qiqOnX8Obxm\nPM+7Zv08rkdV3X/s71XjPfhAVT1imXpnjz/rX6qq36+qX5l+X3ezL/eoqn+oqm+M5/l4VT1pqs6m\n8ef1s+PPzDer6pNV9cyJOt9TVa+qqksmfqbPqqqf3Ih+AjduRsYAZvvtJA9L8rdJbp/kla21M6bq\nHDN+/cd1tL+phpG1JJlP8jNJHp7kj6fq/UWSpyZ5eZJTkxyR5PeTPLiq7t1auzJJquqEJH+Y5K+T\nnJDk1hlC5NlVdZ/W2oVje/+UZHOS30nyxSSHJLlfkoPH/T83XvNChumKSXLNKq7nEUnuk+R5Sb41\ntv/2qjqytfafqzg+VbUpyT8keUCG6ZofSHKHDNNDz6yqH2mtfWf8ZftdSd6f5JeTfDPJ92W4f/tn\nmH748CT/nOS1SV4znmJXo2GHJnn9eO5LM0w1fV1V3T7Jz2e4vwvjNb6jqu7YWvvyeOxhSb6W5Dnj\neW6V5ElJPlRVR7XWPpvk3CRPHs/xB+M1ZDxXqurxSd6cYVT2cUkOGO/jmVX10Nbav0/19++TvCXD\nHw5uMZbt6v2d5S8z/Nwdl4kptTU8v/jEJO9srV1ZVbdIckaSi5L8RoaR4kOT/ESSg1Zof1Wq6kFj\n+59M8pQMP3fHJ3lnVT2utfbWsd4Pj/U+l+EeX53k18e+boiqOjLDz99Xkjwjw3v7xCSnVNX3ttYW\npxP/ToZ/Z3+Q5N+S3CTJXbLz/X5TkntnmMr8uXHfvTP8GwX2da01m81ms83YMvxC3DL8cn/gjP2n\njfsPmCqvDH/sWtw2T+w7Yjxm1vb6qbp3GctfMdX+j47lLxpfH5zhF9J3TdW7fZKtSd48vr71eNwz\nd3Hd5yc5cw33qWV4zu6gibLvTbI9yXPW0M5jx7YePVX+I2P508bX/318fc8V2jpkrPOCGfuOG/cd\nMVF25lh29ETZrZJcN97bwybK7znWffoK59+c4RfzzyU5aca1HDdVf1OGZww/mWTTRPmBGULPWRNl\nLxjbeOFUG6t6f5fp798luWTq3P9tbO+nx9dHj69/Zh3tn5LkW7uoc/Z4rQdOlG1Oct7YtxrL3pYh\n8B8ydf8+Nf2+LnOexft3yAp1/nr8t3P7qfJ/SvLtJPPj63cm+dguzndVkpes9Z7ZbLZ9YzNNEWCG\n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\nqXznmjvvW6FfS/Ytd66p9mv299N1V7r3tY7rXOm4pedavh8bfZ0r38eNvc6l51r7da503EbcxxXb\nn259hR+S5d6bNfVjhfufVbZ/3fYdy/bxxkQY24vc/lY3z83395beEE0GySXBbioELobQ7a1lx4xg\nt5aQvTRcDsftVHdG2F0SsncsrbvHA/mSPwrs/EeDlUL0dB+nw3uPkD1Z/9rtLcI23PCd96UtvbsA\n7OX85g7fBVWV/Tabqra3WTa4tZY2FRKv3nZdHvR/zkySvPe3Hpib3eT6//zOimWtLS2dUTTTrHpt\nxllm11tdX5avu7qaqz/3rHqrbG+Vxy5Xd7X1Nvrerv6+zq69W/d2N/oz896usi9raXOj7+104dbr\ntudpf3lukuQvnnDvHHCTTTudc6fvVzjn0n2zTzrdzcmXO59r54qr7cfyfdi5zeWucWmflr/GrKO/\nq+7TknOt7l6v9j1Z7hpXOO0a35PZx630356d+r7Kn5OV2l/tPVxteysdt+Tf7irv9Vp+Tq7bviNv\n+uAXc2MnjAGs06ZNlU2zJ34tcfW2zf/1/W3nb2YUG26grt523X99/6Ajv8e/VbiBunrbdXtFGLO0\nPQAAQAfCGAAAQAfCGAAAQAfCGAAAQAfCGAAAQAfCGAAAQAfCGAAAQAfCGAAAQAfCGAAAQAfCGAAA\nQAfCGAAAQAfCGAAAQAfCGAAAQAfCGAAAQAfCGAAAQAfCGAAAQAfCGAAAQAfCGAAAQAfCGAAAQAf7\n9e4Au+fm+++XL/zRI3p3AwAAWCMjYwAAAB0IYwAAAB2YpgjwXWBKMdw4+LcKfDdVa613H26Uqmou\nycLCwkLm5uZ6dwcAAOhky5YtmZ+fT5L51tqW1R5nmiIAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgA\nAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAH\nwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgA\nAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAH\nwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgA\nAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHN4gwVlXHV9VFVbW1qs6pqgfsov7BVfWK\nqrpsPOaCqjp2LW1W1QFV9bKqurKqvl1V/1hVt9sT1wcAADCtexirqsckOTnJi5IcleT9SU6rqsOX\nqb9/kjOSHJHk55McmeRXk3xpjW2enOTnkjw2yf2THJjk1KravIGXBwAAMFO11vp2oOpDSc5trT1t\nouyCJO9orZ0wo/6vJ/ntJHdprV27njaraj7JV5P8YmvtreP+w5JckuTY1tq7V9HvuSQLCwsLmZub\nW8MVAwAAe5MtW7Zkfn4+SeZba1tWe1zXkbFxlOvoJKdP7To9yf2WOexRSc5O8oqquqKqzq+q5y6O\naK2yzaOT3GSyTmvty0nOX+6847TGucUtyUGrvEwAAIAlek9TPCTJ5iRXTJVfkeTQZY65Y4bpiZuT\nHJvkD5L8VpL/tYY2D02yrbX2jTWc94QkCxPbpcvUAwAA2KXeYWzR9FzJmlG2aFOSryR5amvtnNba\nWzI8G/a0qXpraXM1dU5MMj+xWewDAABYt/06n//KJNuzdDTqNlk6srXosiTXtta2T5RdkOTQcYri\natq8PMn+VXXLqdGx2yT5wKyTttauSXLN4uuqWu6aAAAAdqnryFhrbVuSc5IcM7XrmCwTipKcleRO\nVTXZ9x9Mcllrbdsq2zwnybWTdarqtknuscJ5AQAANkzvkbEkOSnJm6rqoxkW5nhqksOTvDJJquqN\nSb40sbLiXyR5epKXVtXLktw5yXOT/Nlq22ytLVTVa5P8aVV9LcnXk7w4yXlJ3rMHrxUAACDJDSCM\ntdbeWlW3TvK8JLfNsKLhsa21i8cqhyfZMVH/kqr6qSQvSfLJDJ8v9tIkf7yGNpPkfya5Lsnbktws\nyXuTHDc1/REAAGCP6P45YzdWPmcMAABIbqSfMwYAALCvEsYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6\nEMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYA\nAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6\nEMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYA\nAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6\nEMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYA\nAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6\nEMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYA\nAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6\nEMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA6EMYAAAA66B7Gqur4qrqoqrZW1TlV9YAV6h5X\nVW3GdtOJOl9Yps4rJuqcOWP/W/b0tQIAACzar+fJq+oxSU5OcnySs5L8WpLTqupurbUvLnPYliRH\nTha01rZOvLxPks0Tr++R5IwkfzPVzquTPG/i9XfWfAEAAADr1DWMJXl2kte21l4zvn5WVT0sydOS\nnLDMMa21dvlyDbbWvjr5uqqek+TzSf51qurVK7UDAACwJ3WbplhV+yc5OsnpU7tOT3K/FQ49sKou\nrqpLq+rUqjpqF+d4YpLXtdba1O4nVNWVVfWpqnpxVR20i/4eUFVzi1uSFesDAACspOfI2CEZphNe\nMVV+RZJDlznmM0mOS3Jekrkkz0xyVlXds7V24Yz6P5vk4CSnTJW/OclFSS7PMI3xxCT3THLMCv09\nIcnzV9gPAACwar2nKSbJ9IhVzSgbKrb2wSQf/K+KVWclOTfJ05M8Y8YhT0lyWmvty1PtvHri5flV\ndWGSj1bVvVtr5y7TzxOTnDTx+qAkly5TFwAAYEU9w9iVSbZn6SjYbbJ0tGym1tqOqvpIkjtP76uq\nOyT5ySSPXkVT5ya5dmxnZhhrrV2T5JqJ9lfTRQAAgJm6PTPWWtuW5JwsnRp4TJIPrKaNGhLRvZJc\nNmP3k5N8Jcm7VtHU3ZPcZJl2AAAANlzvaYonJXlTVX00ydlJnprk8CSvTJKqemOSL7XWThhfPz/D\nNMULMzwz9owMYew3Jhutqk0ZwtgbWmvXTe37gSRPSPJPGUbn7pbkT5N8LMPy+gAAAHtc1zDWWntr\nVd06w+d93TbJ+UmOba1dPFY5PMmOiUMOTvKqDFMbFzIEqAe21j481fRPjse+bsZptyV5aIbFPw5M\nckmG0bMXtta2b8R1AQAA7EotXfGd1RiXt19YWFjI3Nxc7+4AAACdbNmyJfPz80ky31rbstrjuj0z\nBgAAsC8TxgAAADoQxgAAADoXdRJhAAAgAElEQVQQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAA\nADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQ\nxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAA\nADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQ\nxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAA\nADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQ\nxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAA\nADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQ\nxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAA\nADoQxgAAADoQxgAAADoQxgAAADoQxgAAADroHsaq6viquqiqtlbVOVX1gBXqHldVbcZ204k6L5ix\n//Kpdmqs9+Wq+k5VnVlVd9+T1wkAADCpaxirqsckOTnJi5IcleT9SU6rqsNXOGxLkttObq21rVN1\nPjVV54em9v9Okmcn+c0k90lyeZIzquqg3bogAACAVeo9MvbsJK9trb2mtXZBa+1ZSS5J8rQVjmmt\ntcsntxl1rpuq89XFHVVVSZ6V5EWttb9vrZ2f5ElJbp7k8Rt3aQAAAMvrFsaqav8kRyc5fWrX6Unu\nt8KhB1bVxVV1aVWdWlVHzahz53EK4kVV9ZaquuPEvu9PcujkeVtr1yT515XOW1UHVNXc4pbEKBoA\nALBuPUfGDkmyOckVU+VXZAhLs3wmyXFJHpXkcUm2Jjmrqu48UedDSX4pycOS/OrY1geq6tbj/sW2\n13LeJDkhycLEdukKdQEAAFbUe5pikrSp1zWjbKjY2gdba3/ZWvtEa+39SX4hyeeSPH2izmmttb9r\nrZ3XWntPkkeMu5603vOOTkwyP7HdboW6AAAAK9qv47mvTLI9S0ejbpOlo1YztdZ2VNVHktx5hTrf\nrqrzJuosPmN2aJLLVnvecSrjNYuvh0fPAAAA1qfbyFhrbVuSc5IcM7XrmCQfWE0b42Ic98rOoWq6\nzgFJ7jpR56IMgeyYiTr7J3nQas8LAACwu3qOjCXJSUneVFUfTXJ2kqcmOTzJK5Okqt6Y5EuttRPG\n189P8sEkFyaZS/KMDGHsNxYbrKoXJ3lnki9mGO363bHuG5JhKcaqOjnJc6vqwrGt5ya5Oslf7eHr\nBQAASNI5jLXW3jourPG8DJ8Hdn6SY1trF49VDk+yY+KQg5O8KsMUw4UkH0vywNbahyfq3C7JX2dY\nIOSrGcLbfSfaTJI/SXKzJH+e5JYZFv34qdbaVRt7hQAAALNVayutWcFyxuXtFxYWFjI3N9e7OwAA\nQCdbtmzJ/Px8ksy31ras9rgbwmqKAAAA+xxhDAAAoANhDAAAoANhDAAAoANhDAAAoANhDAAAoIPd\nDmNVNVdVP1tVd92IDgEAAOwL1hzGquptVfWb4/c3S/LRJG9L8smq+u8b3D8AAIC90npGxh6Y5P3j\n9z+XpJIcnOQZSX53g/oFAACwV1tPGJtP8vXx+4cn+bvW2tVJ3pXkzhvVMQAAgL3ZesLYJUl+vKpu\nkSGMnT6W3zLJ1o3qGAAAwN5sv3Ucc3KSNyf5VpKLk5w5lj8wyXkb0y0AAIC925rDWGvtz6vqw0lu\nn+SM1tqOcdd/xjNjAAAAq7KekbG01j6aYRXFVNXmJD+U5AOttW9sYN8AAAD2WutZ2v7kqnrK+P3m\nJP+a5Nwkl1TVgze2ewAAAHun9Szg8fNJPjF+/8gk35/kLhmeJXvRBvULAABgr7aeMHZIksvH749N\n8jettc8leW2G6YoAAADswnrC2BVJ7jZOUXx4kveM5TdPsn2jOgYAALA3W88CHq9P8rYklyVpSc4Y\ny38syWc2qF8AAAB7tfUsbf+Cqjo/w9L2f9Nau2bctT3JH21k5wAAAPZW613a/m9nlL1h97sDAACw\nb1jPM2OpqgdV1Tur6j+q6sKq+seqesBGdw4AAGBvtZ7PGXtihkU7rk7yZ0lenuQ7Sd5bVY/f2O4B\nAADsnaq1trYDqi5I8qrW2kumyp+d5Fdba3fdwP7dYFXVXJKFhYWFzM3N9e4OAADQyZYtWzI/P58k\n8621Las9bj3TFO+Y5J0zyv8xwwdAAwAAsAvrCWOXJHnojPKHjvsAAADYhfWspvinSf6squ6V5AMZ\nPmvs/kmOS/LMjesaAADA3ms9nzP2F1V1eZLfSvILY/EFSR7TWvuHjewcAADA3mq9nzP29iRvnyyr\nqptU1eGttS9uSM8AAAD2Yuv6nLFl3C3JRRvYHgAAwF5rI8MYAAAAqySMAQAAdCCMAQAAdLDqBTyq\n6od3UeXI3ewLAADAPmMtqyl+PMNnitWMfYvlbSM6BQAAsLdbSxj7/j3WCwAAgH3MqsNYa+3iPdkR\nAACAfYkFPAAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADpYy9L2SZKq+lhmf55YS7I1yX8kOaW1\n9r7d7BsAAMBeaz0jY/+c5I5Jvp3kfUnOTPKtJD+Q5CNJbpvkPVX1MxvURwAAgL3OmkfGkhyS5E9b\na78/WVhVv5vkDq21n6qqFyb530n+YQP6CAAAsNdZz8jYLyT56xnlbxn3Zdx/5Ho7BQAAsLdbTxjb\nmuR+M8rvN+5bbPea9XYKAABgb7eeaYovS/LKqjo6wzNiLcmPJvmVJH841nlYko9tSA8BAAD2QtXa\nrIURd3FQ1ROS/Gaun4r42SQva6391bj/Zklaa23rMk3c6FXVXJKFhYWFzM3N9e4OAADQyZYtWzI/\nP58k8621Las9bj0jY2mtvTnJm1fY/531tAsAALCvWFcYS5JxmuJdM0xT/HRrzbREAACAVVrPhz7f\nJsPKiQ9O8s0klWS+qt6X5LGtta9uaA8BAAD2QutZTfFlSeaS3L21dqvW2i2T3GMs+7ON7BwAAMDe\naj3TFB+e5CdbaxcsFrTWPl1Vv5Hk9A3rGQAAwF5sPSNjm5JcO6P82nW2BwAAsM9ZT3j6lyQvrarD\nFguq6vuSvCTJezeqYwAAAHuz9YSx30xyUJIvVNXnq+o/klw0lj1jIzsHAACwt1rzM2OttUuS3Luq\njklylwyrKX66tfaeje4cAADA3mrdnzPWWjsjyRmLr6vq9kle2Fr75Y3oGAAAwN5sIxfcuFWSJ21g\newAAAHstqx8CAAB0IIwBAAB0IIwBAAB0sOoFPKrq73dR5eDd7AsAAMA+Yy2rKS6sYv8bd6MvAAAA\n+4xVh7HW2pP3ZEcAAAD2JZ4ZAwAA6EAYAwAA6EAYAwAA6EAYAwAA6EAYAwAA6EAYAwAA6EAYAwAA\n6EAYAwAA6EAYAwAA6EAYAwAA6EAYAwAA6EAYAwAA6EAYAwAA6EAYAwAA6EAYAwAA6EAYAwAA6EAY\nAwAA6EAYAwAA6EAYAwAA6EAYAwAA6EAYAwAA6KB7GKuq46vqoqraWlXnVNUDVqh7XFW1GdtNJ+qc\nUFUfqaqrquorVfWOqjpyqp0zZ7Txlj15nQAAAJO6hrGqekySk5O8KMlRSd6f5LSqOnyFw7Ykue3k\n1lrbOrH/QUlekeS+SY5Jsl+S06vqFlPtvHqqnV/b7QsCAABYpf06n//ZSV7bWnvN+PpZVfWwJE9L\ncsIyx7TW2uXLNdhae/jk66p6cpKvJDk6yb9N7Lp6pXYAAAD2pG4jY1W1f4aAdPrUrtOT3G+FQw+s\nqour6tKqOrWqjtrFqebHr1+fKn9CVV1ZVZ+qqhdX1UG76O8BVTW3uCVZsT4AAMBKeo6MHZJkc5Ir\npsqvSHLoMsd8JslxSc5LMpfkmUnOqqp7ttYunK5cVZXkpCT/3lo7f2LXm5NclOTyJPdIcmKSe2aY\n1ricE5I8f+VLAgAAWJ3e0xSTpE29rhllQ8XWPpjkg/9VseqsJOcmeXqSZ8w45OVJfjjJ/afaefXE\ny/Or6sIkH62qe7fWzl2mnydmCHaLDkpy6TJ1AQAAVtQzjF2ZZHuWjoLdJktHy2Zqre2oqo8kufP0\nvqp6WZJHJXlga21XoencJNeO7cwMY621a5JcM9H+aroIAAAwU7dnxlpr25Kck6VTA49J8oHVtDFO\nQ7xXkssmy6rq5UkeneQhrbWLVtHU3ZPcZLIdAACAPan3NMWTkrypqj6a5OwkT01yeJJXJklVvTHJ\nl1prJ4yvn59hmuKFGZ4Ze0aGMPYbE22+Isnjk/xMkquqanHkbaG19p2q+oEkT0jyTxlG5+6W5E+T\nfCzJWXvuUgEAAK7XNYy11t5aVbdO8rwMn/V1fpJjW2sXj1UOT7Jj4pCDk7wqw9TGhQwB6oGttQ9P\n1Hna+PXMqdM9OckpSbYleWiGxT8OTHJJkncleWFrbfuGXBgAAMAuVGsz18pgF8bl7RcWFhYyNzfX\nuzsAAEAnW7Zsyfz8fJLMt9a2rPa4bs+MAQAA7MuEMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAA\ngA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6E\nMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAA\ngA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6E\nMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAA\ngA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6E\nMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAA\ngA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6E\nMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAA\ngA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA5uEGGsqo6vqouqamtVnVNVD1ih\n7nFV1WZsN11Lm1V1QFW9rKqurKpvV9U/VtXt9tQ1AgAATOoexqrqMUlOTvKiJEcleX+S06rq8BUO\n25LktpNba23rGts8OcnPJXlskvsnOTDJqVW1eYMuDQAAYFnVWuvbgaoPJTm3tfa0ibILkryjtXbC\njPrHJTm5tXbwetusqvkkX03yi621t477D0tySZJjW2vvXkW/55IsLCwsZG5ubpVXCwAA7G22bNmS\n+fn5JJlvrW1Z7XFdR8aqav8kRyc5fWrX6Unut8KhB1bVxVV1aVWdWlVHrbHNo5PcZLJOa+3LSc5f\n7rzjtMa5xS3JQbu8QAAAgGX0nqZ4SJLNSa6YKr8iyaHLHPOZJMcleVSSxyXZmuSsqrrzGto8NMm2\n1to31nDeE5IsTGyXLlMPAABgl3qHsUXTcyVrRtlQsbUPttb+srX2idba+5P8QpLPJXn6ettcZZ0T\nk8xPbBb7AAAA1q13GLsyyfYsHY26TZaObM3UWtuR5CNJFkfG/l97dx9t6VXXB/z7m5lMjCQZ3hoT\ngiGuqFGBZTACikKjmNpGa0UqZC1cBWsFtdbFS5VSNcRSRQURqy5QSM3iTYNvlNCCCARLTdJKokAU\nGkQSgbxACJkJsZnJzOz+8Tw3OXPm3HvPvXPv3ffe+XzWetY953nZez9nz7nP/c5+zj7zlHlbkt1V\n9ZB5622t7W+t7VtYktw9T/sAAABm6RrGWmsHklyX5MKpTRcmuXqeMqqqkpyX5NYVlHldkvsm96mq\nM5I8Zt56AQAAjsWu3g1I8qokb6yqDya5Jslzk5yV5LVJUlVvSPKZhZkVq+qlSa5N8vEkpyb5iQxh\n7N/OW2ZrbW9VXZbkV6rq80nuTPLKJB9J8p51PVsAAIBsgjDWWruiqh6W5JIM3xl2Q4bp5W8edzkr\nyeGJQx6c5Lcz3Ia4N8lfJnlKa+3/rKDMJHlBkoNJ3prkpCTvTfKc1tqhtT9LAACAI3X/nrGtyveM\nAQAAyRb9njEAAIDjlTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAG\nAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQ\ngTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAG\nAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQ\ngTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAG\nAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQ\ngTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAG\nAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQ\ngTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAGAADQgTAG\nAADQgTAGAADQgTAGAADQwaYIY1X1Y1X1yaq6t6quq6onz3ncxVXVquptU+vbIstPTuxz04ztv7jW\n5wYAADDLrt4NqKpnJnl1kh9L8udJnpfknVX1da21v1/iuEcleWWSD8zYfMbU83+W5LIkfzi1/pIk\nr5t4/sWVtR4AAGB1NsPI2AuTXNZae31r7aOttecn+VSSH13sgKrameTNSV6a5O+mt7fWbptckvyL\nJFe11qb3vXtqX2EMAADYEF3DWFXtTnJ+kndPbXp3kictceglST7XWrtsjjq+LMl3ZRgZm/biqvp8\nVf1VVf302J7Fyjmxqk5dWJKcslzdAAAAi+l9m+LDk+xMcvvU+tuTnD7rgKr6liQ/lOS8Oet4dpK7\nk/zR1PpfS3J9ki8keUKSlyf5iiT/ZpFyXpJhJA4AAOCY9Q5jC9rU85qxLlV1SpI3Jfnh1todc5b9\nr5O8ubV27xEVtvarE08/XFVfSPIHVfXi1trnZ5Tz8iSvmnh+SpJPz9kGAACAI/QOY3ckOZSjR8FO\ny9GjZUlyTpKzk1xZVQvrdiRJVR1Mcm5r7RMLG8ZZGc9N8sw52nLt+PMrkxwVxlpr+5Psnyh7jiIB\nAABm6/qZsdbagSTXJblwatOFSa6eccjHkjw2wy2KC8vbk1w1Pv7U1P4/lOS61tqH5mjO48aft87V\neAAAgGPQe2QsGW79e2NVfTDJNUmem+SsJK9Nkqp6Q5LPtNZeMt5qeMPkwVV1V5K01qbXn5rk+5O8\naLrCqvrmJN+UIcTtTfL4JL+a5O1LTacPAACwVrqHsdbaFVX1sAwzJJ6RIWxd1Fq7edzlrCSHV1H0\nxRk+e/a7M7btz3Dr4kuTnJjk5gzfN/bLq6gHAABgxaq1o+bJYA7jyNvevXv35tRTT+3dHAAAoJN9\n+/Zlz549SbKntbZv3uM2w5c+AwAAHHeEMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAA\ngA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6E\nMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAA\ngA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6EMQAAgA6Esa3uwD3JpXuG5cA9vVsDAADM\n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\nsGYEDZmfAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x21c28e89898>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "\n",
    "cvresult = cvresult.iloc[100:]\n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(100,cvresult.shape[0]+100)\n",
    "        \n",
    "fig = pyplot.figure(figsize=(10, 10), dpi=100)\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators_detail.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'max_depth': range(3, 10, 2), 'min_child_weight': range(1, 6, 2)}"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#调整树的参数\n",
    "max_depth = range(3,10,2)\n",
    "min_child_weight = range(1,6,2)\n",
    "param_test2_1 = dict(max_depth=max_depth, min_child_weight=min_child_weight)\n",
    "param_test2_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.62793, std: 0.01156, params: {'max_depth': 3, 'min_child_weight': 1},\n",
       "  mean: -0.62658, std: 0.01070, params: {'max_depth': 3, 'min_child_weight': 3},\n",
       "  mean: -0.62587, std: 0.01070, params: {'max_depth': 3, 'min_child_weight': 5},\n",
       "  mean: -0.70148, std: 0.01409, params: {'max_depth': 5, 'min_child_weight': 1},\n",
       "  mean: -0.68941, std: 0.01488, params: {'max_depth': 5, 'min_child_weight': 3},\n",
       "  mean: -0.68384, std: 0.01339, params: {'max_depth': 5, 'min_child_weight': 5},\n",
       "  mean: -0.78946, std: 0.01788, params: {'max_depth': 7, 'min_child_weight': 1},\n",
       "  mean: -0.75858, std: 0.02413, params: {'max_depth': 7, 'min_child_weight': 3},\n",
       "  mean: -0.73975, std: 0.02082, params: {'max_depth': 7, 'min_child_weight': 5},\n",
       "  mean: -0.83923, std: 0.02179, params: {'max_depth': 9, 'min_child_weight': 1},\n",
       "  mean: -0.79272, std: 0.02193, params: {'max_depth': 9, 'min_child_weight': 3},\n",
       "  mean: -0.76526, std: 0.01646, params: {'max_depth': 9, 'min_child_weight': 5}],\n",
       " {'max_depth': 3, 'min_child_weight': 5},\n",
       " -0.6258746574339573)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb2_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=699,  #第一轮参数调整得到的n_estimators最优值\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch2_1 = GridSearchCV(xgb2_1, param_grid = param_test2_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch2_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch2_1.grid_scores_, gsearch2_1.best_params_,     gsearch2_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([157.98295379, 160.53216009, 163.61720066, 221.89010854,\n",
       "        219.89103718, 217.77260342, 282.30051904, 279.80892801,\n",
       "        265.22193813, 312.28612309, 297.03286691, 231.7239995 ]),\n",
       " 'mean_score_time': array([0.30211   , 0.29950309, 0.31543932, 0.63718176, 0.65348768,\n",
       "        0.6211699 , 1.2555038 , 0.94343004, 0.76417141, 1.2594871 ,\n",
       "        0.90518188, 0.53026099]),\n",
       " 'mean_test_score': array([-0.62793398, -0.62657753, -0.62587466, -0.70147555, -0.68941388,\n",
       "        -0.68384403, -0.78946145, -0.75857999, -0.73975   , -0.8392327 ,\n",
       "        -0.79271812, -0.76526193]),\n",
       " 'mean_train_score': array([-0.39888923, -0.41058363, -0.41921402, -0.15715534, -0.19105888,\n",
       "        -0.21920168, -0.04826669, -0.08297052, -0.11455743, -0.02554772,\n",
       "        -0.0529483 , -0.07988318]),\n",
       " 'param_max_depth': masked_array(data=[3, 3, 3, 5, 5, 5, 7, 7, 7, 9, 9, 9],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_min_child_weight': masked_array(data=[1, 3, 5, 1, 3, 5, 1, 3, 5, 1, 3, 5],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'max_depth': 3, 'min_child_weight': 1},\n",
       "  {'max_depth': 3, 'min_child_weight': 3},\n",
       "  {'max_depth': 3, 'min_child_weight': 5},\n",
       "  {'max_depth': 5, 'min_child_weight': 1},\n",
       "  {'max_depth': 5, 'min_child_weight': 3},\n",
       "  {'max_depth': 5, 'min_child_weight': 5},\n",
       "  {'max_depth': 7, 'min_child_weight': 1},\n",
       "  {'max_depth': 7, 'min_child_weight': 3},\n",
       "  {'max_depth': 7, 'min_child_weight': 5},\n",
       "  {'max_depth': 9, 'min_child_weight': 1},\n",
       "  {'max_depth': 9, 'min_child_weight': 3},\n",
       "  {'max_depth': 9, 'min_child_weight': 5}],\n",
       " 'rank_test_score': array([ 3,  2,  1,  6,  5,  4, 10,  8,  7, 12, 11,  9]),\n",
       " 'split0_test_score': array([-0.63806591, -0.63774412, -0.63706654, -0.71492121, -0.70109399,\n",
       "        -0.70035773, -0.80026174, -0.77144926, -0.76446512, -0.83897676,\n",
       "        -0.80825663, -0.76668648]),\n",
       " 'split0_train_score': array([-0.39744009, -0.40985411, -0.41817242, -0.1542701 , -0.1890558 ,\n",
       "        -0.21552851, -0.04828806, -0.0839921 , -0.11477222, -0.02574875,\n",
       "        -0.05346125, -0.08093941]),\n",
       " 'split1_test_score': array([-0.61208781, -0.61160322, -0.61235291, -0.68546695, -0.67097808,\n",
       "        -0.66404914, -0.76322299, -0.72076119, -0.70663857, -0.80851166,\n",
       "        -0.75482506, -0.73766326]),\n",
       " 'split1_train_score': array([-0.39987159, -0.41092722, -0.4221187 , -0.16007685, -0.19369709,\n",
       "        -0.22367333, -0.04919062, -0.08432407, -0.1171249 , -0.0265074 ,\n",
       "        -0.05388063, -0.08094554]),\n",
       " 'split2_test_score': array([-0.63867183, -0.63645894, -0.63524824, -0.70829502, -0.70016874,\n",
       "        -0.69255056, -0.79807429, -0.77570481, -0.75293616, -0.8616995 ,\n",
       "        -0.81031476, -0.7687689 ]),\n",
       " 'split2_train_score': array([-0.39866278, -0.40957863, -0.41615307, -0.15774686, -0.19037676,\n",
       "        -0.21691578, -0.04791598, -0.08319205, -0.11330842, -0.02516156,\n",
       "        -0.05185735, -0.07897015]),\n",
       " 'split3_test_score': array([-0.61577395, -0.6161932 , -0.61365681, -0.68353184, -0.67149214,\n",
       "        -0.67270581, -0.77422503, -0.74022214, -0.72564612, -0.82240844,\n",
       "        -0.78084861, -0.76393795]),\n",
       " 'split3_train_score': array([-0.40167888, -0.41324271, -0.42131448, -0.15727642, -0.19104432,\n",
       "        -0.22242001, -0.04818489, -0.08216293, -0.11414079, -0.02531465,\n",
       "        -0.05299763, -0.08012738]),\n",
       " 'split4_test_score': array([-0.63506889, -0.63088472, -0.63104578, -0.71516288, -0.70333756,\n",
       "        -0.68955151, -0.81152885, -0.78476923, -0.74905631, -0.86457996,\n",
       "        -0.8093461 , -0.78926433]),\n",
       " 'split4_train_score': array([-0.39679279, -0.4093155 , -0.41831145, -0.15640649, -0.19112044,\n",
       "        -0.21747075, -0.04775392, -0.08118146, -0.11344079, -0.02500625,\n",
       "        -0.05254464, -0.07843344]),\n",
       " 'std_fit_time': array([ 1.73948781,  1.23094328,  1.71605189,  3.00423301,  2.2194237 ,\n",
       "         3.01490737,  1.64115646,  0.94363101,  0.36461782,  3.24491716,\n",
       "         5.99323053, 17.08695867]),\n",
       " 'std_score_time': array([0.01881419, 0.02341917, 0.02792169, 0.0834692 , 0.04666706,\n",
       "        0.08233702, 0.31271106, 0.28309164, 0.12643138, 0.37563173,\n",
       "        0.21853094, 0.04381629]),\n",
       " 'std_test_score': array([0.01155732, 0.01070518, 0.01069603, 0.01409172, 0.01487951,\n",
       "        0.01339477, 0.01787858, 0.024132  , 0.02081763, 0.02178909,\n",
       "        0.02192865, 0.01645355]),\n",
       " 'std_train_score': array([0.00174892, 0.00143799, 0.00219627, 0.00188601, 0.00151273,\n",
       "        0.00322698, 0.00049934, 0.00116428, 0.00138698, 0.00054001,\n",
       "        0.00070539, 0.00102364])}"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch2_1.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.625875 using {'max_depth': 3, 'min_child_weight': 5}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x21c28dd2f60>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch2_1.best_score_, gsearch2_1.best_params_))\n",
    "test_means = gsearch2_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch2_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch2_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch2_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch2_1.cv_results_).to_csv('my_preds_maxdepth_min_child_weights_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(max_depth), len(min_child_weight))\n",
    "train_scores = np.array(train_means).reshape(len(max_depth), len(min_child_weight))\n",
    "\n",
    "for i, value in enumerate(max_depth):\n",
    "    pyplot.plot(min_child_weight, -test_scores[i], label= 'test_max_depth:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'max_depth' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig('max_depth_vs_min_child_weght_1.png' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'max_depth': [6, 7, 8], 'min_child_weight': [4, 5, 6]}"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#继续调整参数\n",
    "#max_depth 建议3-10， min_child_weight=1／sqrt(ratio_rare_event) =5.5\n",
    "max_depth = [6,7,8]\n",
    "min_child_weight = [4,5,6]\n",
    "param_test2_2 = dict(max_depth=max_depth, min_child_weight=min_child_weight)\n",
    "param_test2_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.71849, std: 0.02262, params: {'max_depth': 6, 'min_child_weight': 4},\n",
       "  mean: -0.71371, std: 0.01687, params: {'max_depth': 6, 'min_child_weight': 5},\n",
       "  mean: -0.70615, std: 0.01695, params: {'max_depth': 6, 'min_child_weight': 6},\n",
       "  mean: -0.74573, std: 0.02077, params: {'max_depth': 7, 'min_child_weight': 4},\n",
       "  mean: -0.73975, std: 0.02082, params: {'max_depth': 7, 'min_child_weight': 5},\n",
       "  mean: -0.73437, std: 0.02051, params: {'max_depth': 7, 'min_child_weight': 6},\n",
       "  mean: -0.76534, std: 0.02300, params: {'max_depth': 8, 'min_child_weight': 4},\n",
       "  mean: -0.75326, std: 0.02286, params: {'max_depth': 8, 'min_child_weight': 5},\n",
       "  mean: -0.74767, std: 0.01659, params: {'max_depth': 8, 'min_child_weight': 6}],\n",
       " {'max_depth': 6, 'min_child_weight': 6},\n",
       " -0.706150073212762)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb2_2 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=699,  #第一轮参数调整得到的n_estimators最优值\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch2_2 = GridSearchCV(xgb2_2, param_grid = param_test2_2, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch2_2.fit(X_train , y_train)\n",
    "\n",
    "gsearch2_2.grid_scores_, gsearch2_2.best_params_,     gsearch2_2.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([233.8170783 , 234.47175341, 233.1506422 , 261.23374968,\n",
       "        258.30888758, 256.46764622, 280.80830688, 276.46258187,\n",
       "        210.48714342]),\n",
       " 'mean_score_time': array([0.66234822, 0.66438036, 0.66068292, 0.91338229, 0.9403451 ,\n",
       "        0.89426212, 1.0141942 , 1.10874939, 0.5489543 ]),\n",
       " 'mean_test_score': array([-0.71848504, -0.71371379, -0.70615007, -0.74572797, -0.73975   ,\n",
       "        -0.73436626, -0.76534203, -0.75325687, -0.74766609]),\n",
       " 'mean_train_score': array([-0.13849913, -0.1535112 , -0.16873366, -0.0991903 , -0.11455743,\n",
       "        -0.1288708 , -0.07826897, -0.09204231, -0.10658351]),\n",
       " 'param_max_depth': masked_array(data=[6, 6, 6, 7, 7, 7, 8, 8, 8],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_min_child_weight': masked_array(data=[4, 5, 6, 4, 5, 6, 4, 5, 6],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'max_depth': 6, 'min_child_weight': 4},\n",
       "  {'max_depth': 6, 'min_child_weight': 5},\n",
       "  {'max_depth': 6, 'min_child_weight': 6},\n",
       "  {'max_depth': 7, 'min_child_weight': 4},\n",
       "  {'max_depth': 7, 'min_child_weight': 5},\n",
       "  {'max_depth': 7, 'min_child_weight': 6},\n",
       "  {'max_depth': 8, 'min_child_weight': 4},\n",
       "  {'max_depth': 8, 'min_child_weight': 5},\n",
       "  {'max_depth': 8, 'min_child_weight': 6}],\n",
       " 'rank_test_score': array([3, 2, 1, 6, 5, 4, 9, 8, 7]),\n",
       " 'split0_test_score': array([-0.72710692, -0.71585072, -0.70801783, -0.76371315, -0.76446512,\n",
       "        -0.76437241, -0.78153315, -0.76382717, -0.75030157]),\n",
       " 'split0_train_score': array([-0.13902535, -0.15266001, -0.16810994, -0.10094229, -0.11477222,\n",
       "        -0.13086302, -0.07833974, -0.09188053, -0.10734425]),\n",
       " 'split1_test_score': array([-0.69055942, -0.68986554, -0.67904508, -0.71380926, -0.70663857,\n",
       "        -0.7065508 , -0.73548113, -0.71653264, -0.72622448]),\n",
       " 'split1_train_score': array([-0.1426058 , -0.15692317, -0.17176009, -0.09972953, -0.1171249 ,\n",
       "        -0.13039723, -0.08012891, -0.09390769, -0.10893825]),\n",
       " 'split2_test_score': array([-0.73039021, -0.73123561, -0.72575439, -0.76207051, -0.75293616,\n",
       "        -0.74555798, -0.77414517, -0.77250849, -0.76295213]),\n",
       " 'split2_train_score': array([-0.13461706, -0.15125994, -0.16573603, -0.09914357, -0.11330842,\n",
       "        -0.12704602, -0.07719642, -0.09038509, -0.1052457 ]),\n",
       " 'split3_test_score': array([-0.69448541, -0.69948192, -0.69676114, -0.72802491, -0.72564612,\n",
       "        -0.71730799, -0.74130078, -0.73724283, -0.73114128]),\n",
       " 'split3_train_score': array([-0.13963438, -0.1540332 , -0.16895377, -0.09851472, -0.11414079,\n",
       "        -0.12944045, -0.07798831, -0.09268072, -0.10579515]),\n",
       " 'split4_test_score': array([-0.74989465, -0.73214333, -0.72117851, -0.76102069, -0.74905631,\n",
       "        -0.73802897, -0.79425628, -0.77617939, -0.7677197 ]),\n",
       " 'split4_train_score': array([-0.13661304, -0.1526797 , -0.16910848, -0.09762139, -0.11344079,\n",
       "        -0.12660727, -0.07769149, -0.09135751, -0.10559418]),\n",
       " 'std_fit_time': array([1.11107577, 0.41166992, 0.31708864, 3.95450126, 0.49920983,\n",
       "        0.44185479, 0.6228275 , 2.47908473, 4.32193578]),\n",
       " 'std_score_time': array([0.0615209 , 0.06210975, 0.0550791 , 0.30933938, 0.23358776,\n",
       "        0.18033717, 0.56074306, 0.46167344, 0.03598138]),\n",
       " 'std_test_score': array([0.02261858, 0.01686621, 0.0169493 , 0.02076853, 0.02081763,\n",
       "        0.02051423, 0.02300022, 0.02285918, 0.01658536]),\n",
       " 'std_train_score': array([0.00272243, 0.00191823, 0.0019351 , 0.00112074, 0.00138698,\n",
       "        0.00173648, 0.0010027 , 0.00119404, 0.00137939])}"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch2_2.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.706150 using {'max_depth': 6, 'min_child_weight': 6}\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nltQPn3ufDw6F9q/Lifmp3PWlSR3uX7NmDe+99x47d+5k/fr1PPPMM2zduhVjDJdccgmbNm3i8OHD\n5Ofn88ILLwBw4sQJ0tLSuP/++9m4cSNZWVkdXr+uro6FCxdyzz33sGTJEn7wgx/w8ssv88EHH7Bi\nxQouueSSNufs3r2bjRs3UlMOXtVlAAAXZUlEQVRTw+mnn863vvWtdsdNvP/++/z0pz/lzTffJCsr\ni6NHWwdflpeX88Ybb7B7924uueQS362u9vzwhz/kC1/4AnfeeScvvPACjzzySIfHLliwgF/84hfc\neOONbNu2jcbGRpqbm3njjTeYP38+R44c4Sc/+QmvvPIKycnJ3HPPPdx///3ceeedvmscOnSIH//4\nx+zYsYOUlBQWLVrEtGnTOi37mjVruO+++3j++ed911i5ciUvvvgiAN/97ne59957qakJnHE51DRQ\nlOoFYwyfnvjUFyDbKrZR21yLIIzPGM+1E6+l1FXKjJwZg2ZVvvXr17N+/XpmzJgBQG1tLXv27GH+\n/Pnccsst3HbbbVx88cXMnz+/29dMSEjgggsuAGDKlCkkJiYSHx/PlClTKCsra/eciy66iMTERBIT\nE8nJyaGyspKCgoI2x/39739n6dKlvkDLyMjw7bvsssuIiYlh4sSJVFZWdlrGTZs28b//+7++105P\nT+/w2FmzZrF9+3ZqampITExk5syZbNu2jddff52HHnqIzZs388EHH3DmmWcC0NTUxLx58wKusXXr\nVs466yxfea+44go+/vjjHpU9Pz/fFybPP/88OTk5zJo1i1dffbXT99pXGihKdVNlXSVbKraw+ZAV\nIodPWf31C5wFXDD6AkpdpczJm0O6o+N/cPqis5pEJBhjuP3227n++uvb7Nu+fTsvvvgit99+O+ed\nd17AX9ydiY+P93VVjYmJITEx0fe4paWl3XO8xwDExsZ2eJwxpsNusP7X6M70U93tThsfH09RURFr\n167ljDPOYOrUqWzcuJFPPvmECRMm8Mknn7B48WKefPLJDq/RVXl6WvY333yTdevW8eKLL9LQ0MDJ\nkye55pprePzxx7v1nnpC21CU6kBNUw0b92/kZ1t+xqV/vZRznzmXO964gzcOvsGs3FncPe9uXvry\nS7x0+UvcNe8uzi86P2xhEi0pKSm+2yTnn38+v//97333/A8ePEhVVRWHDh0iKSmJa665hltuuYUd\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x21c28e18fd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch2_2.best_score_, gsearch2_2.best_params_))\n",
    "test_means = gsearch2_2.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch2_2.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch2_2.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch2_2.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch2_2.cv_results_).to_csv('my_preds_maxdepth_min_child_weights_2.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(min_child_weight), len(max_depth))\n",
    "train_scores = np.array(train_means).reshape(len(min_child_weight), len(max_depth))\n",
    "\n",
    "for i, value in enumerate(min_child_weight):\n",
    "    pyplot.plot(max_depth, test_scores[i], label= 'test_min_child_weight:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'max_depth' )                                                                                                      \n",
    "pyplot.ylabel( '- Log Loss' )\n",
    "pyplot.savefig( 'max_depth_vs_min_child_weght2.png' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.706150 using {'max_depth': 6, 'min_child_weight': 6}\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nltQPn3ufDw6F9q/Lifmp3PWlSR3uX7NmDe+99x47d+5k/fr1PPPMM2zduhVjDJdccgmbNm3i8OHD\n5Ofn88ILLwBw4sQJ0tLSuP/++9m4cSNZWVkdXr+uro6FCxdyzz33sGTJEn7wgx/w8ssv88EHH7Bi\nxQouueSSNufs3r2bjRs3UlMOXtVlAAAXZUlEQVRTw+mnn863vvWtdsdNvP/++/z0pz/lzTffJCsr\ni6NHWwdflpeX88Ybb7B7924uueQS362u9vzwhz/kC1/4AnfeeScvvPACjzzySIfHLliwgF/84hfc\neOONbNu2jcbGRpqbm3njjTeYP38+R44c4Sc/+QmvvPIKycnJ3HPPPdx///3ceeedvmscOnSIH//4\nx+zYsYOUlBQWLVrEtGnTOi37mjVruO+++3j++ed911i5ciUvvvgiAN/97ne59957qakJnHE51DRQ\nlOoFYwyfnvjUFyDbKrZR21yLIIzPGM+1E6+l1FXKjJwZg2ZVvvXr17N+/XpmzJgBQG1tLXv27GH+\n/Pnccsst3HbbbVx88cXMnz+/29dMSEjgggsuAGDKlCkkJiYSHx/PlClTKCsra/eciy66iMTERBIT\nE8nJyaGyspKCgoI2x/39739n6dKlvkDLyMjw7bvsssuIiYlh4sSJVFZWdlrGTZs28b//+7++105P\nT+/w2FmzZrF9+3ZqampITExk5syZbNu2jddff52HHnqIzZs388EHH3DmmWcC0NTUxLx58wKusXXr\nVs466yxfea+44go+/vjjHpU9Pz/fFybPP/88OTk5zJo1i1dffbXT99pXGihKdVNlXSVbKraw+ZAV\nIodPWf31C5wFXDD6AkpdpczJm0O6o+N/cPqis5pEJBhjuP3227n++uvb7Nu+fTsvvvgit99+O+ed\nd17AX9ydiY+P93VVjYmJITEx0fe4paWl3XO8xwDExsZ2eJwxpsNusP7X6M70U93tThsfH09RURFr\n167ljDPOYOrUqWzcuJFPPvmECRMm8Mknn7B48WKefPLJDq/RVXl6WvY333yTdevW8eKLL9LQ0MDJ\nkye55pprePzxx7v1nnpC21CU6kBNUw0b92/kZ1t+xqV/vZRznzmXO964gzcOvsGs3FncPe9uXvry\nS7x0+UvcNe8uzi86P2xhEi0pKSm+2yTnn38+v//97333/A8ePEhVVRWHDh0iKSmJa665hltuuYUd\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x21c28c98a20>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch2_2.best_score_, gsearch2_2.best_params_))\n",
    "test_means = gsearch2_2.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch2_2.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch2_2.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch2_2.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch2_2.cv_results_).to_csv('my_preds_maxdepth_min_child_weights_2.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(min_child_weight), len(max_depth))\n",
    "train_scores = np.array(train_means).reshape(len(min_child_weight), len(max_depth))\n",
    "\n",
    "for i, value in enumerate(min_child_weight):\n",
    "    pyplot.plot(max_depth, test_scores[i], label= 'test_min_child_weight:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'max_depth' )                                                                                                      \n",
    "pyplot.ylabel( '- Log Loss' )\n",
    "pyplot.savefig( 'max_depth_vs_min_child_weght2.png' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def modelfit(alg, X_train, y_train, useTrainCV=True, cv_folds=None, early_stopping_rounds=100):\n",
    "    \n",
    "    if useTrainCV:\n",
    "        xgb_param = alg.get_xgb_params()\n",
    "        xgb_param['num_class'] = 3\n",
    "        \n",
    "        xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "        cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "                         metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "        \n",
    "        n_estimators = cvresult.shape[0]\n",
    "        alg.set_params(n_estimators = n_estimators)\n",
    "        \n",
    "        print (cvresult)\n",
    "        #result = pd.DataFrame(cvresult)   #cv缺省返回结果为DataFrame\n",
    "        #result.to_csv('my_preds.csv', index_label = 'n_estimators')\n",
    "        cvresult.to_csv('my_preds4_2_3_699.csv', index_label = 'n_estimators')\n",
    "        \n",
    "        # plot\n",
    "        test_means = cvresult['test-mlogloss-mean']\n",
    "        test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "        train_means = cvresult['train-mlogloss-mean']\n",
    "        train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "        x_axis = range(0, n_estimators)\n",
    "        pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "        pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "        pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "        pyplot.xlabel( 'n_estimators' )\n",
    "        pyplot.ylabel( 'Log Loss' )\n",
    "        pyplot.savefig( 'n_estimators4_2_3_699.png' )\n",
    "    \n",
    "    #Fit the algorithm on the data\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')\n",
    "        \n",
    "    #Predict training set:\n",
    "    train_predprob = alg.predict_proba(X_train)\n",
    "    logloss = log_loss(y_train, train_predprob)\n",
    "\n",
    "        \n",
    "    #Print model report:\n",
    "    print (\"logloss of train :\" )\n",
    "    print (logloss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     test-mlogloss-mean  test-mlogloss-std  train-mlogloss-mean  \\\n",
      "0              1.040315           0.000918             1.037376   \n",
      "1              0.991199           0.000895             0.985147   \n",
      "2              0.950191           0.001115             0.941593   \n",
      "3              0.914146           0.001467             0.903369   \n",
      "4              0.883206           0.001971             0.869468   \n",
      "5              0.856715           0.002830             0.840070   \n",
      "6              0.833382           0.003667             0.813882   \n",
      "7              0.811765           0.003422             0.790098   \n",
      "8              0.792959           0.003119             0.768236   \n",
      "9              0.776670           0.002909             0.749813   \n",
      "10             0.762249           0.002797             0.733110   \n",
      "11             0.749349           0.002674             0.717729   \n",
      "12             0.738288           0.003355             0.703740   \n",
      "13             0.727797           0.003571             0.691251   \n",
      "14             0.719067           0.003355             0.680010   \n",
      "15             0.710794           0.003725             0.669914   \n",
      "16             0.703536           0.003652             0.660437   \n",
      "17             0.697147           0.003496             0.651712   \n",
      "18             0.691679           0.003441             0.643828   \n",
      "19             0.686563           0.003818             0.636308   \n",
      "20             0.681852           0.004128             0.629501   \n",
      "21             0.677382           0.004447             0.623057   \n",
      "22             0.673215           0.004339             0.616927   \n",
      "23             0.669643           0.004606             0.610976   \n",
      "24             0.666276           0.004908             0.606146   \n",
      "25             0.663599           0.004995             0.601805   \n",
      "26             0.661071           0.005191             0.597357   \n",
      "27             0.658387           0.005673             0.592446   \n",
      "28             0.655996           0.005608             0.588211   \n",
      "29             0.653927           0.006066             0.584430   \n",
      "..                  ...                ...                  ...   \n",
      "71             0.625990           0.002884             0.484545   \n",
      "72             0.625986           0.003124             0.482749   \n",
      "73             0.626159           0.002857             0.480969   \n",
      "74             0.626308           0.002652             0.479374   \n",
      "75             0.626181           0.002678             0.478042   \n",
      "76             0.626192           0.002858             0.476280   \n",
      "77             0.626019           0.003149             0.474848   \n",
      "78             0.626013           0.002846             0.473010   \n",
      "79             0.626047           0.002985             0.471115   \n",
      "80             0.626094           0.003219             0.469503   \n",
      "81             0.625932           0.003125             0.468054   \n",
      "82             0.625732           0.003454             0.466636   \n",
      "83             0.625536           0.003406             0.465148   \n",
      "84             0.625170           0.002975             0.463367   \n",
      "85             0.625200           0.003054             0.461971   \n",
      "86             0.625068           0.003217             0.460374   \n",
      "87             0.625101           0.002951             0.458888   \n",
      "88             0.624885           0.002611             0.457109   \n",
      "89             0.624794           0.002500             0.455867   \n",
      "90             0.624900           0.002762             0.454125   \n",
      "91             0.624704           0.002844             0.452819   \n",
      "92             0.624751           0.002626             0.451508   \n",
      "93             0.624550           0.002572             0.450161   \n",
      "94             0.624521           0.002886             0.448753   \n",
      "95             0.624223           0.002820             0.447413   \n",
      "96             0.624078           0.003034             0.445796   \n",
      "97             0.623826           0.003341             0.444385   \n",
      "98             0.623724           0.003584             0.442719   \n",
      "99             0.623704           0.003871             0.441081   \n",
      "100            0.623419           0.003960             0.439568   \n",
      "\n",
      "     train-mlogloss-std  \n",
      "0              0.000455  \n",
      "1              0.000341  \n",
      "2              0.000882  \n",
      "3              0.001281  \n",
      "4              0.001110  \n",
      "5              0.000783  \n",
      "6              0.000451  \n",
      "7              0.001088  \n",
      "8              0.001414  \n",
      "9              0.002079  \n",
      "10             0.002521  \n",
      "11             0.002533  \n",
      "12             0.002374  \n",
      "13             0.002070  \n",
      "14             0.002379  \n",
      "15             0.002194  \n",
      "16             0.002176  \n",
      "17             0.002673  \n",
      "18             0.002698  \n",
      "19             0.002561  \n",
      "20             0.002363  \n",
      "21             0.002227  \n",
      "22             0.002564  \n",
      "23             0.002725  \n",
      "24             0.002560  \n",
      "25             0.002554  \n",
      "26             0.003141  \n",
      "27             0.003183  \n",
      "28             0.003359  \n",
      "29             0.003490  \n",
      "..                  ...  \n",
      "71             0.004961  \n",
      "72             0.005201  \n",
      "73             0.005095  \n",
      "74             0.004838  \n",
      "75             0.004795  \n",
      "76             0.004678  \n",
      "77             0.004475  \n",
      "78             0.004349  \n",
      "79             0.004250  \n",
      "80             0.004326  \n",
      "81             0.004184  \n",
      "82             0.004347  \n",
      "83             0.004432  \n",
      "84             0.004447  \n",
      "85             0.004141  \n",
      "86             0.004184  \n",
      "87             0.004270  \n",
      "88             0.004456  \n",
      "89             0.004568  \n",
      "90             0.004369  \n",
      "91             0.004357  \n",
      "92             0.004151  \n",
      "93             0.004191  \n",
      "94             0.004187  \n",
      "95             0.004231  \n",
      "96             0.004385  \n",
      "97             0.004288  \n",
      "98             0.004446  \n",
      "99             0.004565  \n",
      "100            0.004291  \n",
      "\n",
      "[101 rows x 4 columns]\n",
      "logloss of train :\n",
      "0.4707083232474513\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x21c2a1f5780>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#调整max_depth和min_child_weight之后再次调整n_estimators(6,4)\n",
    "xgb2_3 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=699,  #数值大没关系，cv会自动返回合适的n_estimators\n",
    "        max_depth=6,\n",
    "        min_child_weight=4,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb2_3, X_train, y_train, cv_folds = kfold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2MAAANGCAYAAABwUFaMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3Xu4blVdN/zvj43gAdZC4TEkRTIJ\nT6VIlvF6SiMNU9OnJ48lZllgHrI3L7f1KFbEU68ippSPR9QssYOWEIWalAGKgAdQVDJEjhsRXQvF\nzUYY7x9zrry591prr7VY2yF7fz7XNa+17zHHHHPM+743rO8eY45ZrbUAAADwvbVL7w4AAADsjIQx\nAACADoQxAACADoQxAACADoQxAACADoQxAACADoQxAACADoQxAACADoQxAACADoQxgAlV9baquqGq\nfnSRfS+rqlZVT5gqnxn3fbyqvlFVN1bVpqr656p6RlXtPlH3gLGNyW2+qj5dVS+uqg3fi+tcTlUd\nVVVH9O7HrVFVd6yqo6vqUYvsO2J83w/o0K/9xn496Ht97p6q6sSq+mbvfiTJ+P63qtqnd18AhDGA\nW3pxkquSvKOqbrdQOIazVyU5sbX2gYnyA5N8MsnvJfmPJL+S5NFJXpDk8iRvS/L7i5zn9Ul+atx+\nKckZSV6b5E/X/5JW7agkR/TuxK10xySvTPKoRfadkuF9v/J72aHRfhn6tVOFMQAWt2vvDgB8P2mt\nzVfVc5OcliFEvXIMZe9KsilDWEuSVNWuSd6f5C5JfqK1duFUc++tqj9IcvAip/pKa+1jE6//uaoe\nkOTpSX5n3S6IrbTWvprkq737sZ6q6o6ttet79wOA1TEyBjCltfahJG9M8vKqOiTJ0UkemOS5rbW5\niapPTnK/JMcsEsQW2rqktfb+FZ56LsmNkwVVtUtVvbSqPj9On7y6qt5ZVXefPriqfnWc7ri5qq6t\nqvdV1X2n6tyrqt5TVVeM7W2qqg8vTJurqi8nuX+SR05Mo/zycp0e67yhqn65qi6squvHfvz8Cq97\nsq3dqur3J673q1X19qr6H1P1Hl1Vp1fV16rq21X1lar6u3F64gH5bth65cR1nDgeu9U0xbGtC6rq\np6rqzLHNL1fVc8b9j6+q88ZrO7+qHjfVn3uP/bxorHN5VX1gcrrrOGXyE+PLt0/06+iJOk+sqrPG\n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\n29cnmZnad1CGUPGf4/5vZBjNevYK2j0xS68i+uWJeg/LMCr1zfEcZ2VczXGqvYeN79PmDPd2/WmG\nvyct40qHy/Tl6GX60ibqPSDDYyu+keHv1Key9SqYL0lyRoa/lzdkCGFvSXLPcf/uGR5P8ekM/224\nPkMoOzoT/12w2Ww777awTCwAwG1WVZ2WIWD/SO++AKyUaYoAwG1KVR2X5JMZpuveJcMUwsMyjA4D\n3GYIYwBsd+PCKMu5uU08Xwu2YUOGFU/3zTC98HNJfrm19pddewWwSqYpArBdVdUBSS7eRrVXtdaO\n3u6dAYDvI0bGANjersiwgty26gDATsXIGAAAQAce+gwAANCBaYprVFWVZL8Mz3EBAAB2bnsmuaKt\nYuqhMLZ2+yW5rHcnAACA7xt3T3L5SisLY2t3XZJceumlmZmZ6d0XAACgk/n5+dzjHvdIVjlrThi7\nlWZmZoQxAABg1SzgAQAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA\n0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEw\nBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA\n0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgBrcP2W7+SAl52SA152Sq7f8p3e3QHgNkgYAwAA\n6EAYAwAA6EAYAwAA6EAYAwAA6KB7GKuqo6rq4qraXFXnVtXDt1F/r6o6oaquHI+5sKoOn9i/sao+\nUVXXVdXVVfX+qjpoqo3Tq6pNbe/ZXtcIAAAwrWsYq6qnJjk+yTFJDk7y0SSnVtX+S9TfLckHkxyQ\n5BeTHJTk15NcPlHtkUlOSPLQJIcl2TXJaVV1p6nm3pzkbhPbb6zLRQEAAKzArp3P/5Ikb22tvWV8\n/eKqemySI5NsXKT+rya5S5JDW2s3jmWXTFZorT1u8nVVPSfJ1UkOSfLvE7uub61dtdKOVtXuSXaf\nKNpzpccCAABM6zYyNo5yHZLktKldpyU5dInDnpjkrCQnVNWmqrqgql5eVRuWOdXs+PPaqfJnVtU1\nVfXZqnp1VW0rXG1MMjexXbaN+gAAAEvqOTK2T5INSTZNlW9Ksu8Sx9wryaOTvDvJ4UkOzDAlcdck\nfzBduaoqyXFJ/qO1dsHErncnuTjJVUkekOTYJA/MMK1xKceObS3YMwIZAACwRr2nKSZJm3pdi5Qt\n2CXDlMPntdZuSnJuVe2X5HezSBhL8oYkP5bkYbc4YWtvnnh5QVVdlOScqnpwa+28RTvZ2g1Jbvjv\nTlYtfUUAAADb0HMBj2uS3JStR8Humq1HyxZcmeSLYxBbcGGSfcdpj/+tql6fYVrjT7fWtjWCdV6S\nGzOMtAEAAGx33cJYa21LknOz9dTAw5KcucRhZyS5d1VN9vtHklw5tpcavCHJU5I8urV28Qq6c/8k\nt8sQ9gAAALa73s8ZOy7Jr1XVr1bVfavqtUn2T/LGJKmqd1bVsRP1/yLJ3kleV1U/UlWPT/LyDPeN\nLTghybOSPCPJdVW177jdYWzzh6vqFVX141V1wPiMsr9J8skMYQ8AAGC763rPWGvtpKraO8krMjzr\n64Ikh7fWFpar3z/JzRP1L62qn03y2iSfyfB8sdcl+ZOJZo8cf54+dbrnJDkxyZYkj0nyoiR7JLk0\nySlJXjU1/REAAGC76b6AR2vtz5P8+RL7HrVI2VkZHui8VHvLrqzRWrs0w4OhAQAAuuk9TREAAGCn\nJIwBAAB0IIwBAAB0IIwBAAB0IIwBAAB0IIwBAAB0IIwBAAB0IIwBAAB0IIwBAAB0IIwBAAB0IIwB\nAAB0IIwBAAB0UK213n24TaqqmSRzc3NzmZmZ6d0dAACgk/n5+czOzibJbGttfqXHGRkDAADoQBgD\nAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADo\nQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgD\nAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADo\nQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgD\nAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADo\nQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgD\nAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADoQBgDAADo4PsijFXVUVV1cVVtrqpzq+rh\n26i/V1WdUFVXjsdcWFWHr6bNqtq9ql5fVddU1beq6h+r6u7b4/oAAACmdQ9jVfXUJMcnOSbJwUk+\nmuTUqtp/ifq7JflgkgOS/GKSg5L8epLLV9nm8UmenORpSR6WZI8kJ1fVhnW8PAAAgEVVa61vB6o+\nnuS81tqRE2UXJnl/a23jIvV/M8nvJrlPa+3GtbRZVbNJvprkl1trJ43790tyaZLDW2v/soJ+zySZ\nm5uby8zMzCquGAAA2JHMz89ndnY2SWZba/MrPa7ryNg4ynVIktOmdp2W5NAlDntikrOSnFBVm6rq\ngqp6+cKI1grbPCTJ7SbrtNauSHLBUucdpzXOLGxJ9lzhZQIAAGyl9zTFfZJsSLJpqnxTkn2XOOZe\nGaYnbkhyeJI/SvI7SX5vFW3um2RLa+3rqzjvxiRzE9tlS9QDAADYpt5hbMH0XMlapGzBLkmuTvK8\n1tq5rbX3ZLg37MipeqtpcyV1jk0yO7FZ7AMAAFizXTuf/5okN2Xr0ai7ZuuRrQVXJrmxtXbTRNmF\nSfYdpyiupM2rkuxWVXeeGh27a5IzFztpa+2GJDcsvK6qpa4JAABgm7qOjLXWtiQ5N8lhU7sOyxKh\nKMkZSe5dVZN9/5EkV7bWtqywzXOT3DhZp6ruluQBy5wXAABg3fQeGUuS45K8q6rOybAwx/OS7J/k\njUlSVe9McvnEyop/keQFSV5XVa9PcmCSlyf5s5W22Vqbq6q3JnlNVX0tybVJXp3k/CQf2o7XCgAA\nkOT7IIy11k6qqr2TvCLJ3TKsaHh4a+2Sscr+SW6eqH9pVf1sktcm+UyG54u9LsmfrKLNJPntJN9J\n8t4kd0jy4SRHTE1/BAAA2C66P2fstspzxgAAgOQ2+pwxAACAnZUwBgAA0IEwBgAA0IEwBgAA0IEw\nBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA\n0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEw\nBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA\n0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEw\nBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA\n0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEw\nBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA\n0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0EH3MFZVR1XVxVW1uarO\nraqHL1P3iKpqi2y3n6jz5SXqnDBR5/RF9r9ne18rAADAgl17nryqnprk+CRHJTkjyW8kObWq7tda\n+8oSh80nOWiyoLW2eeLlQ5JsmHj9gCQfTPI3U+28OckrJl5/e9UXAAAAsEZdw1iSlyR5a2vtLePr\nF1fVY5McmWTjEse01tpVSzXYWvvq5OuqelmSLyX5t6mq1y/XDgAAwPbUbZpiVe2W5JAkp03tOi3J\nocscukdVXVJVl1XVyVV18DbO8awkb2uttandz6yqa6rqs1X16qracxv93b2qZha2JMvWBwAAWE7P\nkbF9Mkwn3DRVvinJvksc8/kkRyQ5P8lMkhclOaOqHthau2iR+r+QZK8kJ06VvzvJxUmuyjCN8dgk\nD0xy2DL93ZjklcvsBwAAWLHe0xSTZHrEqhYpGyq29rEkH/vvilVnJDkvyQuSvHCRQ56b5NTW2hVT\n7bx54uUFVXVRknOq6sGttfOW6OexSY6beL1nksuWqAsAALCsnmHsmiQ3ZetRsLtm69GyRbXWbq6q\nTyQ5cHpfVd0zyc8kecoKmjovyY1jO4uGsdbaDUlumGh/JV0EAABYVLd7xlprW5Kcm62nBh6W5MyV\ntFFDInpQkisX2f2cJFcnOWUFTd0/ye2WaAcAAGDd9Z6meFySd1XVOUnOSvK8JPsneWOSVNU7k1ze\nWts4vn5lhmmKF2W4Z+yFGcLY8ycbrapdMoSxd7TWvjO174eTPDPJP2UYnbtfktck+WSG5fUBAAC2\nu65hrLV2UlXtneF5X3dLckGSw1trl4xV9k9y88QheyV5U4apjXMZAtQjWmtnTzX9M+Oxb1vktFuS\nPCbD4h97JLk0w+jZq1prN63HdQEAAGxLbb3iOysxLm8/Nzc3l5mZmd7dAQAAOpmfn8/s7GySzLbW\n5ld6XLd7xgAAAHZmwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgA\nAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAH\nwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgA\nAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAH\nwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgA\nAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAH\nwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgA\nAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAH\nwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAH3cNYVR1VVRdX1eaqOreqHr5M3SOqqi2y3X6iztGL7L9q\nqp0a611RVd+uqtOr6v7b8zoBAAAmdQ1jVfXUJMcnOSbJwUk+muTUqtp/mcPmk9xtcmutbZ6q89mp\nOj86tf+lSV6S5LeSPCTJVUk+WFV73qoLAgAAWKFdO5//JUne2lp7y/j6xVX12CRHJtm4xDGttXbV\nEvsWfGepOlVVSV6c5JjW2t+PZc9OsinJM5L83yWO2z3J7hNFghsAALBm3UbGqmq3JIckOW1q12lJ\nDl3m0D2q6pKquqyqTq6qgxepc+A4BfHiqnpPVd1rYt8PJdl38ryttRuS/Ns2zrsxydzEdtkydQEA\nAJbVc5riPkk2ZBiRmrQpQ1hazOeTHJHkiUmenmRzkjOq6sCJOh9P8itJHpvk18e2zqyqvcf9C22v\n5rxJcmyS2Ynt7svUBQAAWFbvaYpJ0qZe1yJlQ8XWPpbkY/9dseqMJOcleUGSF451Tp045PyqOivJ\nl5I8O8lxaznv2O4NSW6YOPdSVQEAALap58jYNUluytajUXfN1qNWi2qt3ZzkE0kOXKbOt5KcP1Fn\n4V6yNZ8XAADg1uoWxlprW5Kcm+SwqV2HJTlzJW2Mi3E8KMmVy9TZPcl9J+pcnCGQHTZRZ7ckj1zp\neQEAAG6t3tMUj0vyrqo6J8kA+8fIAAAgAElEQVRZSZ6XZP8kb0ySqnpnkstbaxvH16/MME3xoiQz\nGaYmPijJ8xcarKpXJ/lAkq9kGO36/bHuO5JhKcaqOj7Jy6vqorGtlye5PslfbefrBQAASNI5jLXW\nThoX1nhFhueBXZDk8NbaJWOV/ZPcPHHIXknelGGK4VySTyZ5RGvt7Ik6d0/y1xkWCPlqhvD20Ik2\nk+RPk9whyZ8nuXOGRT9+trV23fpeIQAAwOKqtSXXrGAZVTWTZG5ubi4zMzO9uwMAAHQyPz+f2dnZ\nJJltrc2v9LieC3gAAADstIQxAACADoQxAACADoQxAACADoQxAACADoQxAACADoQxAACADoQxAACA\nDoQxAACADoQxAACADoQxAACADoQxAACADoQxAACADoQxAACADoQxAACADoQxAACADoQxAACADoQx\nAACADoQxAACADoQxAACADoQxAACADoQxAACADoQxAACADoQxAACADoQxAACADoQxAACADoQxAACA\nDoQxAACADoQxAACADoQxAACADoQxAACADm51GKuqmar6haq673p0CAAAYGew6jBWVe+tqt8a/3yH\nJOckeW+Sz1TV/1zn/gEAAOyQ1jIy9ogkHx3//OQklWSvJC9M8vvr1C8AAIAd2lrC2GySa8c/Py7J\n37XWrk9ySpID16tjAAAAO7K1hLFLk/xUVd0pQxg7bSy/c5LN69UxAACAHdmuazjm+CTvTvLNJJck\nOX0sf0SS89enWwAAADu2VYex1tqfV9XZSe6R5IOttZvHXf8V94wBAACsyFpGxtJaOyfDKoqpqg1J\nfjTJma21r69j3wAAAHZYa1na/viqeu745w1J/i3JeUkurapHrW/3AAAAdkxrWcDjF5N8evzzE5L8\nUJL7ZLiX7Jh16hcAAMAObS1hbJ8kV41/PjzJ37TWvpjkrRmmKwIAALANawljm5Lcb5yi+LgkHxrL\n75jkpvXqGAAAwI5sLQt4vD3Je5NcmaQl+eBY/pNJPr9O/QIAANihrWVp+6Or6oIMS9v/TWvthnHX\nTUn+z3p2DgAAYEe11qXt/3aRsnfc+u4AAADsHNZyz1iq6pFV9YGq+s+quqiq/rGqHr7enQMAANhR\nreU5Y8/KsGjH9Un+LMkbknw7yYer6hnr2z0AAIAdU7XWVndA1YVJ3tRae+1U+UuS/Hpr7b7r2L/v\nW1U1k2Rubm4uMzMzvbsDAAB0Mj8/n9nZ2SSZba3Nr/S4tUxTvFeSDyxS/o8ZHgANAADANqwljF2a\n5DGLlD9m3AcAAMA2rGU1xdck+bOqelCSMzM8a+xhSY5I8qL16xoAAMCOay3PGfuLqroqye8k+aWx\n+MIkT22t/cN6dg4AAGBHtdbnjL0vyfsmy6rqdlW1f2vtK+vSMwAAgB3Ymp4ztoT7Jbl4HdsDAADY\nYa1nGAMAAGCFhDEAAIAOhDEAAIAOVryAR1X92DaqHHQr+wIAALDTWM1qip/K8EyxWmTfQnlbj04B\nAADs6FYTxn5ou/UCAABgJ7PiMNZau2R7dgQAAGBnYgEPAACADoQxAACADoQxAACADoQxAACADoQx\nAACADlaztH2SpKo+mcWfJ9aSbE7yn0lObK195Fb2DQAAYIe1lpGxf05yryTfSvKRJKcn+WaSH07y\niSR3S/KhqnrSOvURAABgh7PqkbEk+yR5TWvtDycLq+r3k9yztfazVfWqJP87yT+sQx8BAAB2OGsZ\nGfulJH+9SPl7xn0Z9x+01k4BAADs6NYSxjYnOXSR8kPHfQvt3rDWTgEAAOzo1jJN8fVJ3lhVh2S4\nR6wl+Ykkv5bkj8c6j03yyXXpIQAAwA6oWltsYcRtHFT1zCS/le9ORfxCkte31v5q3H+HJK21tnmJ\nJm7zqmomydzc3FxmZmZ6dwcAAOhkfn4+s7OzSTLbWptf6XFrGRlLa+3dSd69zP5vr6VdAACAncWa\nwliSjNMU75thmuLnWmumJQIAAKzQWh76fNcMKyc+Ksk3klSS2ar6SJKntda+uq49BAAA2AGtZTXF\n1yeZSXL/1tpdWmt3TvKAsezP1rNzAAAAO6q1hLHHJTmytXbhQkFr7XNJnp/k51bbWFUdVVUXV9Xm\nqjq3qh6+TN0jqqotst1+os7GqvpEVV1XVVdX1fur6qCpdk5fpI33rLbvAAAAa7WWMLZLkhsXKb9x\nte1V1VOTHJ/kmCQHJ/loklOrav9lDptPcrfJbWrVxkcmOSHJQ5MclmEq5mlVdaepdt481c5vrKbv\nAAAAt8ZaFvD41ySvq6qnt9auSJKq+sEkr03y4VW29ZIkb22tvWV8/eKqemySI5NsXOKY1lq7aqkG\nW2uPm3xdVc9JcnWSQ5L8+8Su65drBwAAYHtay8jYbyXZM8mXq+pLVfWfSS4ey1640kaqarcMAem0\nqV2nJTl0mUP3qKpLquqyqjq5qg7exqlmx5/XTpU/s6quqarPVtWrq2rPbfR396qaWdgyXC8AAMCa\nrHpkrLV2aZIHV9VhSe6TYTXFz7XWPrTKpvZJsiHJpqnyTUn2XeKYzyc5Isn5GRYMeVGSM6rqga21\ni6YrV1UlOS7Jf7TWLpjY9e4MAfKqDIuPHJvkgRmmNS5lY5JXLn9JAAAAK1OttfVpqOoeSV7VWvvV\nFdbfL8nlSQ5trZ01Uf57SX65tXafFbSxS5Lzkvx7a22rUbmqOiHJ45M8rLV22TLtHJLknCSHtNbO\nW6LO7kl2nyjaM8llc3NzmZmZ2VZXAQCAHdT8/HxmZ2eTZLa1Nr/S49YyTXEpd0ny7FXUvybJTdl6\nFOyu2Xq0bFGttZuTfCLJgdP7qur1SZ6Y5KeXC2Kj8zIsQLJVOxPnuqG1Nr+wJbluJX0EAABYzHqG\nsVVprW1Jcm62nhp4WJIzV9LGOA3xQUmunCyrqjckeUqSR7fWLl5BU/dPcrvJdgAAALantaymuJ6O\nS/KuqjonyVlJnpdk/yRvTJKqemeSy1trG8fXr0zysSQXZbhn7IUZwtjzJ9o8IckzkjwpyXVVtTDy\nNtda+3ZV/XCSZyb5pwyjc/dL8pokn0xyxva7VAAAgO/qGsZaaydV1d5JXpHhWV8XJDm8tXbJWGX/\nJDdPHLJXkjdlmNo4lyFAPaK1dvZEnSPHn6dPne45SU5MsiXJYzIs/rFHkkuTnJLhfreb1uXCAAAA\ntmHFC3hU1d9vo8peSR7ZWttwq3t1GzAubz9nAQ8AANi5rXUBj9WMjM2tYP87V9EeAADATmvFYay1\n9pzt2REAAICdSbfVFAEAAHZmwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgA\nAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAH\nwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgA\nAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAH\nwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgA\nAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAH\nwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgA\nAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAHwhgAAEAH\nwhgAAEAHwhgAAEAH3xdhrKqOqqqLq2pzVZ1bVQ9fpu4RVdUW2W6/mjaraveqen1VXVNV36qqf6yq\nu2+vawQAAJjUPYxV1VOTHJ/kmCQHJ/loklOrav9lDptPcrfJrbW2eZVtHp/kyUmeluRhSfZIcnJV\nbVinSwMAAFhStdb6dqDq40nOa60dOVF2YZL3t9Y2LlL/iCTHt9b2WmubVTWb5KtJfrm1dtK4f78k\nlyY5vLX2Lyvo90ySubm5uczMzKzwagEAgB3N/Px8Zmdnk2S2tTa/0uO6joxV1W5JDkly2tSu05Ic\nusyhe1TVJVV1WVWdXFUHr7LNQ5LcbrJOa+2KJBcsdd5xWuPMwpZkz21eIAAAwBJ6T1PcJ8mGJJum\nyjcl2XeJYz6f5IgkT0zy9CSbk5xRVQeuos19k2xprX19FefdmGRuYrtsiXoAAADb1DuMLZieK1mL\nlA0VW/tYa+0vW2ufbq19NMkvJflikhestc0V1jk2yezEZrEPAABgzXqHsWuS3JStR6Pumq1HthbV\nWrs5ySeSLIyMraTNq5LsVlV3Xul5W2s3tNbmF7Yk162kfwAAAIvpGsZaa1uSnJvksKldhyU5cyVt\nVFUleVCSK1fR5rlJbpysU1V3S/KAlZ4XAADg1ti1dweSHJfkXVV1TpKzkjwvyf5J3pgkVfXOJJcv\nrKxYVa9M8rEkFyWZSfLCDGHs+Stts7U2V1VvTfKaqvpakmuTvDrJ+Uk+tF2vFgAAIN8HYay1dlJV\n7Z3kFRmeGXZBhuXlLxmr7J/k5olD9krypgzTEOeSfDLJI1prZ6+izST57STfSfLeJHdI8uEkR7TW\nblr/qwQAALil7s8Zu63ynDEAACC5jT5nDAAAYGcljAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEA\nAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQg\njAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEA\nAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQg\njAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEA\nAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQgjAEAAHQg\njAEAAHQgjAEAAHQgjAEAAHQgjPH/t3f3QZZV5b2Af68ghCsz41cQ1CAGIxqvJRbiB0o0KmqwojHe\nBKrUaK5Ro2UshRhDEMTLvWLEAEmoFBGIRAMRE8WAiUpQTKKgJRBUFMQQQFFmENGZgcjw4bp/7N3m\neKanp2emp1fPzPNUneqz11777HfPrOruX6991gEAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQ\nxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAA\nADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADoQxgAAADpYEmGsqt5Q\nVddX1Z1VdXlVHTzP4w6vqlZVH5tqbxt4vHWizw2z7H/3Ql8bAADAbHbuXUBVHZbklCRvSPL5JK9L\n8omq+sXW2rfmOO4RSd6b5N9m2b3X1PavJDkzyUem2o9NcvrE9u2bVj0AAMDm6R7GkhyR5MzW2hnj\n9pur6vlJXp/kqNkOqKqdkpyd5B1JDk5y/8n9rbWVU/1fnOTi1tp/Tr3U2um+G1JVuybZdaJp2XyO\nAwAAmE3X2xSrapckByS5cGrXhUkOmuPQY5N8r7V25jzO8ZAkL8wwMzbtbVX1/aq6sqqOHuvZkKOS\nrJ543LSxcwMAAGxI75mxByfZKcmqqfZVSfac7YCqenqSVyfZf57neGWStUk+OtX+p0muSPKDJE9O\nckKSRyb5nQ28zglJTprYXhaBDAAA2Ey9w9iMNrVds7SlqpYl+Zskr2mt3TrP1/7fSc5urd35Uyds\n7eSJza9U1Q+S/H1Vva219v31CmxtXZJ1E7XM8/QAAADr6x3Gbk1yb9afBdsj68+WJcm+SfZJcsFE\nGLpPklTVPUn2a61dN7NjXJVxvySHzaOWL4xfH5VkvTAGAACwkLq+Z6y1dleSy5McMrXrkCSXzHLI\nNUken+EWxZnH+UkuHp9/e6r/q5Nc3lr78jzKeeL49eZ5FQ8AALAFes+MJcP7sD5YVZcluTTJa5Ps\nneS0JKmqDyT5TmvtqPFWw6smD66qHyZJa226fXmS30hy5PQJq+ppSZ6aIcStTnJgkpOTnD/XcvoA\nAAALpXsYa62dW1UPyrBC4l4ZwtahrbUbxy57J/nxZrz04Rnee/a3s+xbl+HWxXdkWK7+xgyfN/ae\nzTgPAADAJqvW1lsng3kYZ95Wr169OsuXL+9dDgAA0MmaNWuyYsWKJFnRWlsz3+O6vmcMAABgRyWM\nAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAA\ndCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCM\nAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAA\ndCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCM\nAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAA\ndCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCM\nAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAA\ndCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCM\nAQAAdLAkwlhVvaGqrq+qO6vq8qo6eJ7HHV5Vrao+NtV+1tg++fjCVJ9dq+rPq+rWqrqjqs6vqocv\n5HUBAABsSPcwVlWHJTklyf9L8sQk/5bkE1W190aOe0SS9479Z/PJJHtNPA6d2n9KkpckOTzJM5Ls\nnuTjVbXT5l0JAADA/HUPY0mOSHJma+2M1trVrbU3J/l2ktdv6IAxMJ2d5B1J/nMD3da11lZOPG6b\nOH5FklcnObK1dlFr7d+TvDzJ45M8d2EuCwAAYMO6hrGq2iXJAUkunNp1YZKD5jj02CTfa62dOUef\nZ1XVLVV1bVWdXlV7TOw7IMl9J8/bWvtukqs2dN7xtsblM48ky+Y4NwAAwJx6z4w9OMlOSVZNta9K\nsudsB1TV0zPMar1mjtf9RJKXJXl2kiOTHJjkM1W167h/zyR3tdZ+MN/zJjkqyeqJx01znB8AAGBO\nO/cuYNSmtmuWtlTVsiR/k+Q1rbVbN/hirZ07sXlVVV2W5MYkL0zy0TnqmPW8oxOSnDSxvSwCGQAA\nsJl6h7Fbk9yb9Wej9sj6s2VJsm+SfZJcUFUzbfdJkqq6J8l+rbXrpg9qrd1cVTcm+YWxaWWSXarq\nAVOzY3skuWS2Qltr65Ksm9meOD8AAMAm63qbYmvtriSXJzlkatchmT0UXZNhkY39Jx7nJ7l4fP7t\n2c5TVQ9K8nNJbh6bLk9y9+R5q2qvJP9zA+cFAABYUL1nxpLh1r8PjrcSXprktUn2TnJaklTVB5J8\np7V2VGvtzgyLbPxEVf0wSVprV43buyc5LslHMoSvfZK8K8Ms3Hlj39VVdWaSP6mq7ye5LcMy+V9N\nctFWvFYAAIAkSyCMtdbOHWeujs3weWBXJTm0tXbj2GXvJD/ehJe8N8Ps2W8luX+GQHZxksNaa2sn\n+r0lyT1JPpxktySfTvKq1tq9W3A5AAAA81KtbWi9CuYyLm+/evXq1Vm+fHnvcgAAgE7WrFmTFStW\nJMmK1tqa+R7Xe2l7AACAHZIwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA\n0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgAA0IEwBgCb4647kuNWDI+7\n7uhdDQDbIGEMAACgA2EMAACgA2EMAACgA2EMAACgA2EMAACgA2EMAACgA2EMAACgA2EMAACgA2EM\nAACgA2EMAACgA2EMAACgA2EMAACgA2EMAACgA2EMAACgA2EMAACgA2EMAACgA2EMAACgA2EMAACg\nA2EMAACgA2EMAACgA2EMAACgA2EMAACgA2EMAACgA2EMAACgA2EMAACgA2EMAACgA2EMAACgA2EM\nAACgA2EMAACgg517FwAA26Rd7pcct7p3FQBsw8yMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAA\ndCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCM\nAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAA\ndCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdLBz\n7wK2dWvWrOldAgAA0NHmZoJqrS1wKTuGqnpYkpt61wEAACwZD2+tfWe+nYWxzVRVleShSdb2roU5\nLcsQmh8e/1dsnPHCpjJm2FTGDJvKmNl2LEvy3bYJActtiptp/Eeed+qljyEzJ0nWttbcU8qcjBc2\nlTHDpjJm2FTGzDZlk/9/LOABAADQgTAGAADQgTDG9m5dkneOX2FjjBc2lTHDpjJm2FTGzHbMAh4A\nAAAdmBkDAADoQBgDAADoQBgDAADoQBgDAADoQBhju1BVy6rqlKq6sap+VFWXVNWBU30eW1XnV9Xq\nqlpbVV+oqr171Uw/GxsvVbV7VZ1aVTeN+6+uqtf3rJnFVVW/VFUXVNV3q6pV1a9N7a+qOm7c/6Oq\n+mxVPW6qzwOq6oPj95zV4/P7L+6VsFi2dMxU1T5VdWZVXT/uv66q3llVuyz+1bAYFuL7zETfXavq\nyvF19l+cK2AhCGNsL85IckiSVyR5fJILk1xUVQ9LkqraN8nnklyT5FlJnpDk+CR39iiW7uYcL0lO\nTvKCJC9P8thx+8+r6sUdaqWP+yX5cpI3bmD/HyQ5Ytx/YJKVSf65qpZN9Dknyf4ZxtILxucf3FoF\n092WjpnHZPi97HVJHpfkLUl+N8m7tmLN9LUQ32dmvCfJd7dGkWxdlrZnm1dVuyVZm+TFrbV/nGi/\nMsnHW2tvr6oPJbm7tfaKXnWyNMxzvFyV5NzW2vET+y9P8k+ttWMWvWi6qqqW5CWttY+N25Xhl55T\nWmt/PLbtmmRVkre11v6yqh6b5OtJntpa++LY56lJLk3ymNbaNzpcCotkc8bMBl7nrUle31r7+cWp\nnF62ZMxU1a8kOSnJS5N8LckTW2tXLvIlsJnMjLE92DnJTll/lutHSZ5RVfdJ8sIk11bVp6rqlqr6\n4vTtAOww5hwv4/PPJXlRVT1svE3kl5M8OsmnFq9MlrBHJtkzw4xqkqS1ti7JvyQ5aGx6WpLVM0Fs\n7POFJKsn+rDjmM+Ymc2KJLdt3dJYouY1ZqrqIUlOz3Cnx38tco0sAGGMbV5rbW2GvzYfU1UPraqd\nqurlSZ6SZK8keyTZPckfJvlkkuclOS/JR6vqmZ3KppN5jJckeVOGWY2bktyVYdy8obX2uR41s+Ts\nOX5dNdW+amLfnklumeXYWyb6sOOYz5j5KePt9b+X5LStWBdL10bHzDh7dlaS01prly1eaSwkYYzt\nxSuSVJLvJFmX4Zfpc5Lcm/8e5//QWju5tXZla+3dST6e4X58djxzjZeM209N8qIkByQ5MslfVNVz\nF79UlrDp+/xrqm229wFM92HHsrExMzRWPTTDH4H+rrV2xmIUxpI115j5vSTLk5ywqBWxoIQxtgut\ntetaa8/MMAP2c621Jye5b5Lrk9ya5J4MMx2Trk5iNcUd0FzjZXxP2buSHNFau6C19pXW2qlJzk3y\n+/2qZglZOX6dntHYI//9V+yVSR4yy7E/m/X/0s32bz5jJslPgtjFGWbwX7v1S2OJms+YeXaGPxyu\nq6p7kvzH2H5ZVf311i+RhSCMsV1prd3RWru5qh6Q5PkZZsPuSvKlJPtNdX90khsXu0aWjtnGS4ZQ\ndt8kP57qPjnLyo7t+gy/KB0y0zAuP/7MJJeMTZcmWVFVT57o85QM7wG6JOxo5jNmMq7o+tkkVyT5\n7dba9PchdhzzGTNvyrA69P7j49Cx/bAkRy9apWyRnXsXAAuhqp6fYer+G0keleTE8fn7xy4nJjm3\nqv41w18cX5DkVzMsc88OZq7x0lq7u6r+JcmJVfWjDIH9mUl+K8MSw+wAqmr3DGNjxiPHz+65rbX2\nrao6JckfVdU3k3wzyR9lePP8OUnSWru6qj6Z5PSqet34Gu/LsGKnlRS3Q1s6ZsYZsc8m+VaGWfif\nHd4SlLTWVobtzgJ8n/nW1OvdPj69rrV201a/ABaEMMb2YkWGe6YfnmHlqY8kObq1dneStNbOq6rf\nTXJUkj/L8Iv3Sy3IsMOac7wkOXzcf3aSB2YIZEfHG+l3JE/K8IebGSeNX/86yasyfKbPbkn+IskD\nknwxyfPGBWJmvCzD95uZ1dDOz4Y/T4ht35aOmedl+MX8URkWD5pUW6dkOluI7zNs43zOGAAAQAfe\n/wAAANCBMAYAANCBMAYAANCBMAYAANCBMAYAANCBMAYAANCBMAYAANCBMAYAANCBMAYAG1FVN1TV\nm3vXAcD2RRgDgFFVvX8qi6AAAAS3SURBVKqqfjjLrgOTvG8Rzi/0AexAdu5dAAAsda217/WuYVNU\n1S6ttbt61wHA3MyMAbDkVNVnq+rPquo9VXVbVa2squPmeeyKqnpfVd1SVWuq6jNV9YSJ/U+oqour\nau24//KqelJVPSvJ+5OsqKo2Po4bj/mpGatx3+uq6uNV9V9VdXVVPa2qHjXWfkdVXVpV+04cs29V\n/UNVraqq26vqS1X13MlrTvKIJCfPnH9i30ur6mtVtW6s5cipa76hqt5eVWdV1eokp1fVLlV1alXd\nXFV3jn2O2qT/CAC2KmEMgKXqlUnuSPKUJH+Q5NiqOmSuA6qqkvxjkj2THJrkgCRXJPl0VT1w7HZ2\nkpsy3Hp4QJJ3J7k7ySVJ3pxkTZK9xsd75zjdMUk+kGT/JNckOSfJXyY5IcmTxj6nTvTfPck/JXlu\nkicm+VSSC6pq73H/r491HTtx/lTVAUk+nORDSR6f5Lgkx1fVq6bqeWuSq8ZrOj7Jm5K8KMlvJtkv\nycuT3DDH9QCwyNymCMBS9ZXW2jvH59+sqjcmeU6Sf57jmF/OEFj2aK2tG9t+v6p+Lcn/yvC+r72T\nnNhau2bmtWcOHmeVWmtt5Tzqe39r7cPjcX+c5NIkx7fWPjW2/WmGmbZkeNEvJ/nyxPFvr6qXZAhM\np7bWbquqe5OsnTr/EUk+3Vo7fty+tqp+MUP4Omui32daaz8Jj2PI+2aSz7XWWpIb53FNACwiM2MA\nLFVfmdq+OckeGznmgAwzUN8fbwW8vapuT/LIJDO3DJ6U5Iyquqiq/nDyVsItqG/V+PWrU20/U1XL\nk6Sq7jfedvn1qvrhWNdjMoTDuTw2yeen2j6f5BeqaqeJtsum+pyVYdbuG+Mtn8/b6BUBsKiEMQCW\nqruntls2/nPrPhlC2/5Tj/2SnJgkrbXjkjwuw+2Mz07y9XGGakvqa3O0zdR8YpKXJjk6ycFjXV9N\nsstGzlMTrzXZNu2OyY3W2hUZQugxSXZL8uGq+vuNnAuAReQ2RQC2J1dkeL/YPa21GzbUqbV2bZJr\nMyyW8bdJfjvJeUnuSrLTho7bQgcnOau1dl6SVNXuSfaZ6jPb+b+e5BlTbQcluba1du9cJ2ytrUly\nbpJzxyD2yap6YGvtts27BAAWkpkxALYnF2V479bHqur5VbVPVR1UVf93XDFxt3GFwWdV1SOq6ukZ\nFvK4ejz+hiS7V9VzqurBVfU/FrC2/0jy61W1/7i64zlZ/+fwDUl+qaoeVlUPHtv+JMlzquqYqnp0\nVb0yyRsz9+Iiqaq3VNXhVfWYqnp0kt9IsjLJbJ+jBkAHwhgA241xoYpDk/xrkr/KMPv1oQwzUKuS\n3JvkQRlWQbw2wyqFn0jyjvH4S5KclmE26XsZVnFcKG9J8oMMqzZekGE1xSum+hw71nrdeP6Z2w1/\nM8nhGVZL/D9Jjm2tnbWR892e5G0Z3kv2pfF1D22t/XiLrwSABVHDzy0AAAAWk5kxAACADoQxALYZ\nVfWyySXrpx5f610fAGwKtykCsM2oqmVJHrKB3Xe31nywMQDbDGEMAACgA7cpAgAAdCCMAQAAdCCM\nAQAAdCCMAQAAdCCMAQAAdCCMAQAAdCCMAQAAdPD/AYks0Dfgg0o0AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x21c2a293ef0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('my_preds4_2_3_699.csv')\n",
    "\n",
    "cvresult = cvresult.iloc[100:]\n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(100,cvresult.shape[0]+100)\n",
    "        \n",
    "fig = pyplot.figure(figsize=(10, 10), dpi=100)\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators_detail4_2_3_699.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'colsample_bytree': [0.6, 0.7, 0.8, 0.9],\n",
       " 'subsample': [0.3, 0.4, 0.5, 0.6, 0.7, 0.8]}"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#调整树的参数subsample和 colsample_bytree\n",
    "#max_depth 建议3-10， min_child_weight=1／sqrt(ratio_rare_event) =5.5\n",
    "subsample = [i/10.0 for i in range(3,9)]\n",
    "colsample_bytree = [i/10.0 for i in range(6,10)]\n",
    "param_test3_1 = dict(subsample=subsample, colsample_bytree=colsample_bytree)\n",
    "param_test3_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.70388, std: 0.01813, params: {'colsample_bytree': 0.6, 'subsample': 0.3},\n",
       "  mean: -0.70140, std: 0.01586, params: {'colsample_bytree': 0.6, 'subsample': 0.4},\n",
       "  mean: -0.70074, std: 0.01347, params: {'colsample_bytree': 0.6, 'subsample': 0.5},\n",
       "  mean: -0.70145, std: 0.01526, params: {'colsample_bytree': 0.6, 'subsample': 0.6},\n",
       "  mean: -0.69898, std: 0.01675, params: {'colsample_bytree': 0.6, 'subsample': 0.7},\n",
       "  mean: -0.69479, std: 0.01780, params: {'colsample_bytree': 0.6, 'subsample': 0.8},\n",
       "  mean: -0.70550, std: 0.01904, params: {'colsample_bytree': 0.7, 'subsample': 0.3},\n",
       "  mean: -0.70481, std: 0.02257, params: {'colsample_bytree': 0.7, 'subsample': 0.4},\n",
       "  mean: -0.70689, std: 0.01937, params: {'colsample_bytree': 0.7, 'subsample': 0.5},\n",
       "  mean: -0.70675, std: 0.01971, params: {'colsample_bytree': 0.7, 'subsample': 0.6},\n",
       "  mean: -0.70600, std: 0.01689, params: {'colsample_bytree': 0.7, 'subsample': 0.7},\n",
       "  mean: -0.70173, std: 0.01808, params: {'colsample_bytree': 0.7, 'subsample': 0.8},\n",
       "  mean: -0.70828, std: 0.02122, params: {'colsample_bytree': 0.8, 'subsample': 0.3},\n",
       "  mean: -0.71199, std: 0.01566, params: {'colsample_bytree': 0.8, 'subsample': 0.4},\n",
       "  mean: -0.70978, std: 0.02013, params: {'colsample_bytree': 0.8, 'subsample': 0.5},\n",
       "  mean: -0.71098, std: 0.01941, params: {'colsample_bytree': 0.8, 'subsample': 0.6},\n",
       "  mean: -0.70778, std: 0.01697, params: {'colsample_bytree': 0.8, 'subsample': 0.7},\n",
       "  mean: -0.70799, std: 0.01588, params: {'colsample_bytree': 0.8, 'subsample': 0.8},\n",
       "  mean: -0.71170, std: 0.01678, params: {'colsample_bytree': 0.9, 'subsample': 0.3},\n",
       "  mean: -0.71392, std: 0.01825, params: {'colsample_bytree': 0.9, 'subsample': 0.4},\n",
       "  mean: -0.71751, std: 0.01934, params: {'colsample_bytree': 0.9, 'subsample': 0.5},\n",
       "  mean: -0.71467, std: 0.01754, params: {'colsample_bytree': 0.9, 'subsample': 0.6},\n",
       "  mean: -0.71321, std: 0.01719, params: {'colsample_bytree': 0.9, 'subsample': 0.7},\n",
       "  mean: -0.71147, std: 0.01590, params: {'colsample_bytree': 0.9, 'subsample': 0.8}],\n",
       " {'colsample_bytree': 0.6, 'subsample': 0.8},\n",
       " -0.694793196060676)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb3_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=645,  #第二轮参数调整得到的n_estimators最优值\n",
    "        max_depth=6,\n",
    "        min_child_weight=4,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch3_1 = GridSearchCV(xgb3_1, param_grid = param_test3_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch3_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch3_1.grid_scores_, gsearch3_1.best_params_,     gsearch3_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.694793 using {'colsample_bytree': 0.6, 'subsample': 0.8}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x21c28f43c50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch3_1.best_score_, gsearch3_1.best_params_))\n",
    "test_means = gsearch3_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch3_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch3_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch3_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch3_1.cv_results_).to_csv('my_preds_subsampleh_colsample_bytree_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(colsample_bytree), len(subsample))\n",
    "train_scores = np.array(train_means).reshape(len(colsample_bytree), len(subsample))\n",
    "\n",
    "for i, value in enumerate(colsample_bytree):\n",
    "    pyplot.plot(subsample, -test_scores[i], label= 'test_colsample_bytree:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'subsample' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'subsample_vs_colsample_bytree1.png' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'reg_alpha': [1.5, 2], 'reg_lambda': [0.5, 1, 2]}"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#调整正则化参数\n",
    "#reg_alpha = [1e-3, 1e-2, 0.05, 0.1]    #default = 0\n",
    "#reg_lambda = [1e-3, 1e-2, 0.05, 0.1]   #default = 1\n",
    "\n",
    "reg_alpha = [ 1.5, 2]    #default = 0, 测试0.1,1，1.5，2\n",
    "reg_lambda = [0.5, 1, 2]      #default = 1，测试0.1， 0.5， 1，2\n",
    "\n",
    "param_test5_1 = dict(reg_alpha=reg_alpha, reg_lambda=reg_lambda)\n",
    "param_test5_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.68241, std: 0.01367, params: {'reg_alpha': 1.5, 'reg_lambda': 0.5},\n",
       "  mean: -0.67944, std: 0.01428, params: {'reg_alpha': 1.5, 'reg_lambda': 1},\n",
       "  mean: -0.67718, std: 0.01334, params: {'reg_alpha': 1.5, 'reg_lambda': 2},\n",
       "  mean: -0.67480, std: 0.01419, params: {'reg_alpha': 2, 'reg_lambda': 0.5},\n",
       "  mean: -0.67259, std: 0.01369, params: {'reg_alpha': 2, 'reg_lambda': 1},\n",
       "  mean: -0.66912, std: 0.01574, params: {'reg_alpha': 2, 'reg_lambda': 2}],\n",
       " {'reg_alpha': 2, 'reg_lambda': 2},\n",
       " -0.6691241823766686)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb5_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=645,  #第二轮参数调整得到的n_estimators最优值\n",
    "        max_depth=6,\n",
    "        min_child_weight=4,\n",
    "        gamma=0,\n",
    "        subsample=0.7,\n",
    "        colsample_bytree=0.6,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch5_1 = GridSearchCV(xgb5_1, param_grid = param_test5_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch5_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch5_1.grid_scores_, gsearch5_1.best_params_,     gsearch5_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([221.38146071, 225.23469672, 222.27137475, 225.6205358 ,\n",
       "        214.97147665, 184.0670887 ]),\n",
       " 'mean_score_time': array([0.71458302, 0.71167812, 0.76127229, 0.63986502, 0.69377522,\n",
       "        0.41694121]),\n",
       " 'mean_test_score': array([-0.68241056, -0.67943532, -0.67718322, -0.6748039 , -0.67259041,\n",
       "        -0.66912418]),\n",
       " 'mean_train_score': array([-0.13745977, -0.14107049, -0.14806097, -0.15550015, -0.15882159,\n",
       "        -0.16473614]),\n",
       " 'param_reg_alpha': masked_array(data=[1.5, 1.5, 1.5, 2, 2, 2],\n",
       "              mask=[False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_reg_lambda': masked_array(data=[0.5, 1, 2, 0.5, 1, 2],\n",
       "              mask=[False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'reg_alpha': 1.5, 'reg_lambda': 0.5},\n",
       "  {'reg_alpha': 1.5, 'reg_lambda': 1},\n",
       "  {'reg_alpha': 1.5, 'reg_lambda': 2},\n",
       "  {'reg_alpha': 2, 'reg_lambda': 0.5},\n",
       "  {'reg_alpha': 2, 'reg_lambda': 1},\n",
       "  {'reg_alpha': 2, 'reg_lambda': 2}],\n",
       " 'rank_test_score': array([6, 5, 4, 3, 2, 1]),\n",
       " 'split0_test_score': array([-0.68953418, -0.68550523, -0.68812741, -0.6830264 , -0.68031631,\n",
       "        -0.67959748]),\n",
       " 'split0_train_score': array([-0.13842436, -0.14080859, -0.14786823, -0.15594184, -0.15848529,\n",
       "        -0.1648246 ]),\n",
       " 'split1_test_score': array([-0.66094495, -0.65619454, -0.65571602, -0.65191685, -0.65038483,\n",
       "        -0.64542629]),\n",
       " 'split1_train_score': array([-0.1390062 , -0.14400476, -0.14990591, -0.15753011, -0.16085543,\n",
       "        -0.1672015 ]),\n",
       " 'split2_test_score': array([-0.69445265, -0.69126809, -0.68665607, -0.68562766, -0.68269619,\n",
       "        -0.68374419]),\n",
       " 'split2_train_score': array([-0.13578208, -0.14018553, -0.14742811, -0.15444869, -0.15790407,\n",
       "        -0.16301647]),\n",
       " 'split3_test_score': array([-0.67183375, -0.67010391, -0.66725022, -0.66467763, -0.66310451,\n",
       "        -0.65514421]),\n",
       " 'split3_train_score': array([-0.1362236 , -0.14010186, -0.14747625, -0.15476313, -0.15885909,\n",
       "        -0.16455311]),\n",
       " 'split4_test_score': array([-0.69529015, -0.69410916, -0.68816641, -0.68877385, -0.68645326,\n",
       "        -0.6817098 ]),\n",
       " 'split4_train_score': array([-0.13786262, -0.14025171, -0.14762636, -0.15481696, -0.15800408,\n",
       "        -0.16408503]),\n",
       " 'std_fit_time': array([ 1.02760125,  4.50462333,  0.3250192 ,  3.53978453, 15.84566971,\n",
       "         4.4700238 ]),\n",
       " 'std_score_time': array([0.09600299, 0.12773564, 0.11887967, 0.08786398, 0.1358821 ,\n",
       "        0.09298333]),\n",
       " 'std_test_score': array([0.01366913, 0.01427795, 0.01333901, 0.01418603, 0.01368941,\n",
       "        0.01574063]),\n",
       " 'std_train_score': array([0.00125115, 0.00148798, 0.00093512, 0.00113414, 0.00107342,\n",
       "        0.00137844])}"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch5_1.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.669124 using {'reg_alpha': 2, 'reg_lambda': 2}\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x21c28f3a7f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch5_1.best_score_, gsearch5_1.best_params_))\n",
    "test_means = gsearch5_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch5_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch5_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch5_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch5_1.cv_results_).to_csv('my_preds_reg_alpha_reg_lambda_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "train_scores = np.array(train_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "\n",
    "#log_reg_alpha = [0,0,0,0]\n",
    "#for index in range(len(reg_alpha)):\n",
    "#   log_reg_alpha[index] = math.log10(reg_alpha[index])\n",
    "    \n",
    "for i, value in enumerate(reg_alpha):\n",
    "    pyplot.plot(reg_lambda, -test_scores[i], label= 'reg_alpha:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'reg_alpha' )                                                                                                      \n",
    "pyplot.ylabel( '-Log Loss' )\n",
    "pyplot.savefig( 'reg_alpha_vs_reg_lambda1.png' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n",
       "       colsample_bytree=0.6, gamma=0, learning_rate=0.1, max_delta_step=0,\n",
       "       max_depth=6, min_child_weight=4, missing=None, n_estimators=645,\n",
       "       n_jobs=1, nthread=None, objective='multi:softprob', random_state=0,\n",
       "       reg_alpha=2, reg_lambda=2, scale_pos_weight=1, seed=3, silent=True,\n",
       "       subsample=0.7)"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch5_1.best_estimator_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "best_model=gsearch5_1.best_estimator_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "texta=np.array(test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\preprocessing\\label.py:151: DeprecationWarning: The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.\n",
      "  if diff:\n"
     ]
    }
   ],
   "source": [
    "#调用模型并预测\n",
    "predict_y=best_model.predict(texta)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "predict_result=pd.DataFrame(predict_y,columns=['predict_y'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "#输出预测结果\n",
    "predict_result\n",
    "predict_result.to_csv('predict_result.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
